自学Unity3D系列-第一天学习笔记

前言

最近也不知道为什么,突然有了做游戏的想法(可能是小游戏玩上头了...),于是,有了本文......

由于Unity3D很多需要界面拖曳操作,文章没有很好的办法来描述学习的过程。没有基础自学这个的话,还是推荐视频(我的视频是15年网上找的Unity5),而我用的是Unity2020.2的,界面虽然不同,但大体都能找得到对应功能。

本文只是第一天学习内容的笔记,并没有完整的学习过程。

安装问题

  • Unity安装基本没有什么问题点,按安装程序界面提示就行了。

  • 安装Unity Hub,这是类似管理工具吧。可以管理Unity和项目,正常是安装Unity Hub,然后在Hub里面下载Unity。当然,自己手工安装Unity也没问题。

  • 脚本的编辑的话,因为Unity3D调用VS2022,始终会提示hold on。网上查过基本都说是因为中文路径的问题,但我这边确定不是这问题,且VS2017没有问题。我另外装了个Rider,专门用于写Unity脚本。

知识点

  • C#脚本文件名必须与类名一致

  • GUI构建事件:OnGUI,需注意帧擦除可能导致的bug

  • 脚本常用事件有:Start、Update、OnGUI、OnMouseDown、FixedUpdate

  • 移动偏移量应*Time.deltaTime,防止帧数不同导致的偏移差异

  • uGUI按钮事件名:public void OnClick()

  • 输出信息:Debug.Log(123);

  • 主摄像机:Camera.mainCamera

  • 检测按键:if(Input.GetKey(KeyCode.D))

  • 检测Axias轴:Input.GetAxias("Mouse X")

  • 移动对象:游戏对象.transform.Translate(Vector3.back*1f) //移动当前对象可不写游戏对象,坐标为当前对象的本地坐标系

  • 移动对象:游戏对象.transform.posittion=Vector3.zero //直接设置位置

  • 旋转对象:游戏对象.transform.Rotate(Vector3.back*1f) 旋转当前对象可不写游戏对象

  • 绕对象旋转:旋转对象.transform.RotateAround (目标对象.transform.position,Vector3.up,5);

  • 创建游戏对象(内置):GameObject.CreatePrimitive(PrimitiveType.Sphere);

  • 获取对象组件:游戏对象.GetComponent().material.color=Color.red;

  • 销毁对象/组件:Destroy(s1,延迟秒);

  • 复制预置对象:Instantiate(Earth) as GameObject;

  • 添加组件:游戏对象.AddComponent();

  • 切换场景:SceneManger.LoadScene(""); //using UnityEngine.SceneManagement;

Demo

今天的内容做个Demo,因为太简单了,代码都不打算保留了,录个动图留个念想吧...

image

用到的知识点

NGui界面制作、uGui界面制作、动态创建/删除预置对象、按键检测、移动/旋转对象、移动摄像机(模拟后坐力)、切换场景

代码

场景2代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ButtonClickObject : MonoBehaviour {
    private GameObject _gameObject;
    private float _speed;
    private int _count;
    private bool _enableHzl;

    private void Start() {
        _speed = 2f;
        _count = 0;
    }

	//重置并创建对象
    public void OnReset() {
		//存在旧对象就销毁
        if (_gameObject != null) {
            Destroy(_gameObject);
            _gameObject = null;
        }
			
        _gameObject = GameObject.CreatePrimitive(PrimitiveType.Cube);//创建预设对象
        _gameObject.transform.position=Vector3.zero;//设置位置
        _gameObject.GetComponent<MeshRenderer>().material.color=Color.cyan;//设置颜色
        _gameObject.AddComponent<ButtonClickObject>();//注册脚本
    }

    public void OnHzl() {//模拟后坐力
        _enableHzl = true;
    }

    public void OnNext() {//加载场景
        SceneManager.LoadScene("Scene3");
    }
    
    void Update() {
        if (_gameObject == null) return;

        if (_enableHzl) {
            _count += 1;
            if (_count <=10) {
               //镜头往后移 Camera.main.transform.Translate(Vector3.back*Time.deltaTime*5);
            }else if (_count > 10 && _count<=20) {
               //镜头往前移 Camera.main.transform.Translate(Vector3.forward*Time.deltaTime*5);
            }else if (_count > 20) {
                _enableHzl = false;
                _count = 0;
            }
        }

        if (Input.GetKey(KeyCode.UpArrow)) {
            _gameObject.transform.Translate(Vector3.up*_speed*Time.deltaTime);
        }else if (Input.GetKey(KeyCode.DownArrow)) {
            _gameObject.transform.Translate(Vector3.down*_speed*Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.LeftArrow)) {
            _gameObject.transform.Translate(Vector3.left*_speed*Time.deltaTime);
        }else if (Input.GetKey(KeyCode.RightArrow)) {
            _gameObject.transform.Translate(Vector3.right*_speed*Time.deltaTime);
        }
        
        if (Input.GetKey(KeyCode.A)) {
            _gameObject.transform.Rotate(Vector3.up*_speed*20*Time.deltaTime);
        }else if (Input.GetKey(KeyCode.D)) {
            _gameObject.transform.Rotate(Vector3.down*_speed*20*Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.S)) {
            _gameObject.transform.Rotate(Vector3.left*_speed*20*Time.deltaTime);
        }else if (Input.GetKey(KeyCode.W)) {
            _gameObject.transform.Rotate(Vector3.right*_speed*20*Time.deltaTime);
        }
    }
}
posted @ 2021-12-22 09:44  苏暖暖  阅读(242)  评论(0编辑  收藏  举报