574 字
2 分钟
Unity程序重要概念
一、MonoBehaviour生命周期
一个继承自MonoBhaviour的类有以下生命周期:
Awake 在Script被加载时执行一次OnEnableStart 在游戏开始运行时执行一次FixedUpdate 每隔一段固定时间执行一次(默认为0.02s)Physics EventsInput EventsUpdate 每帧之后执行一次LateUpdateRendering EventsOnDisable二、Unity中几个重要的类与结构
1. GameObject 游戏对象类
Component类中有定义gameObject这个变量,使用它可以访问当前GameObject
GameObject常用字段
nametaglayertransformGameObject常用方法
SetActive 设置物体激活状态
Destroy 摧毁对象
Instantiate 实例化对象
AddComponent 添加组件
CreatePrimitive 创建Unity自带的物体2. Component 组件类
Component类包括了所有组件,包括Unity自带的和我们自己创建的
MonoBehavioour继承自Component
GetComponent 方法
使用代码修改Sprite颜色
SpriteRenderer sr = GetComponent<SpriteRenderer>();sr.color = Color.red;3. Vector3 三维向量结构
Vector3代表一个三维向量,它可以用来表示位置/距离/方向等等
Vector3 v = new Vector3(1.2f,1.5f,-0.5f); print(v.x) print(v.y) print(v.z)Vector3内置的模板
| 变量名 | 说明 | 等价写法 |
|---|---|---|
Vector3.zero | 原点 / 零向量 | new Vector3(0, 0, 0) |
Vector3.one | 各轴均为1的向量 | new Vector3(1, 1, 1) |
Vector3.forward | 世界坐标系的前方 (Z轴正方向) | new Vector3(0, 0, 1) |
Vector3.back | 世界坐标系的后方 (Z轴负方向) | new Vector3(0, 0, -1) |
Vector3.right | 世界坐标系的右方 (X轴正方向) | new Vector3(1, 0, 0) |
Vector3.left | 世界坐标系的左方 (X轴负方向) | new Vector3(-1, 0, 0) |
Vector3.up | 世界坐标系的上方 (Y轴正方向) | new Vector3(0, 1, 0) |
Vector3.down | 世界坐标系的下方 (Y轴负方向) | new Vector3(0, -1, 0) |
Vector3常用函数
返回两个点之间的距离
Vector3 v = new Vector3(1.2f, 0, 0);Vector3 u = Vector3.up;float dist = Vector3.Distance(u,v);4. Transform 变换类
Transform管理GameObject的位置/旋转/缩放
每一个GameObject都有Transform,它是唯一一个有此性质的Component
transform在GameObject类和Component类都有定义
因为MonoBehaviour继承自Component
所以可以直接写 tranform直接访问
Transform常用字段
position 世界坐标系中的位置localPosition 相对于父物体的局部位置rotation 定义和控制对象在三维空间中的朝向lossyScale 相对于世界坐标系的缩放localScale 相对于其父物体的缩放Transform常用方法
Translate 让物体位移的方法GetChild 获得子物体的对象5. Time 时间类
Time类包含了和游戏时间相关的信息
Time常用变量
Time.deltaTime 代表一帧(两次Update之间)的时长Time.fixedDeltaTime 代表两次FixedUpdate之间的时长每秒执行代码片段
void Update(){ timer += Time.deltaTime; if(time > 1) { timer = 0; }}6. Input 输入类
Input类提供了接收玩家输入的方法
Input常用方法
Input.GetKeyDown() 按下键盘按键的瞬间为trueInput.GetMouseButtonDown() 按下鼠标按键的瞬间为trueInput.GetKey() 键盘按键被按着时一直为trueInput.GetKeyUp() 当抬起一个键盘按键的瞬间为trueCSharp中的静态和范围
静态
static 关键字可以用来修饰变量、函数或者是类。
一般情况我们访问一个类中的变量或函数时需要通过那个类的实例访问
而静态成员的变量或函数属于这个类本身,和实例完全没关系。因此访问静态成员时只需要用类名.成员就好
范围
每个变量都是只在一定的范围内生效的,在范围之外是不可访问的
简单来说,一个变量的范围是它所在花括号其中的部分,它只在花括号之间生效
void Start(){ //i只能在括号内访问 for(i=0;i<20;i++){ print(i); } int sum = Add(1);}
//a和b也只在括号内有效int Add(int a){ int b =1; return a + b;} 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Unity程序重要概念
https://blabka.me/posts/unity笔记2unity程序重要概念/ 部分信息可能已经过时
