-
目录
1. 仅发送消息给自己(以及身上的其他MonoBehaviour对象)
1. 在游戏对象增添Animator动画编辑器就可以加入动画
一、 控制台输出
-
1. Debug.Log("String")
- 输出字符串
-
2. Debug.LogWarning("String")
- 输出警告为字符串内容
-
3. Debug.LogError("String")
- 输出报错为字符串内容
-
-
二、 事件函数(生命周期函数)
-
1. 赋值顺序
- 变量声明并直接赋值>检视面板赋值>Awake>OnEnable>Start>外部赋值
-
2. Reset()
- 1.调用情况
- 在编辑器不调用的情况下运行
- 2.调用时间、此数和作用
- 当脚本第一次挂载到对象或者使用Reset命令之后调用
- 来初始化脚本的各个属性,Reset最常用与在检视面板中提供良好的默认值
- 1.调用情况
-
3. Awake()
- 1.调用情况
- a.在加载场景时初始化包含脚本的激活状态的GameObject时
- b.GameObject从非激活转变为激活状态
- c.在初始化使用Instantiate创建的GameObject之后
- 2.调用时间、此数和作用
- 在脚本实例的生存期内,Unity 仅调用 Awake 一次。脚本的生存期持续到包含它的场景被卸载为止。
- Awake 来代替构造函数进行初始化,在Unity这里,组件的初始化不使用构造函数
- 1.调用情况
-
4. OnEnable()
- 1.调用情况
- a.游戏物体被激活
- b.脚本组件被激活
- 2.调用时间、此数和作用
- 每次游戏物体或者脚本被激活都会调用一次
- 已添加NewBehaviour的GameObject由未激活到已激活的时候,即setActive(true)
- 脚本由不可用到可用的时候,即enabled=true
- 重复赋值 变为初始状态
- 每次游戏物体或者脚本被激活都会调用一次
- 1.调用情况
-
5. Start()
- 1.调用情况
- a.游戏物体被激活
- b.脚本组件被激活
- 2.调用时间、此数和作用
- 在脚本实例激活时在第一帧的Update之前被调用
- 后于Awake执行,方便控制逻辑的前后调用顺序
- 1.调用情况
-
6. Update()
- 1.调用情况
- a.游戏物体被激活
- b.脚本组件被激活
- 2.调用时间、此数和作用
- 每帧调用,是最常用函数,每秒调用60次左右(根据当前电脑的的性能和状态)
- 实时更新数据,接受输入数据
- 1.调用情况
-
7. LateUpdate()
- 1.调用情况
- a.游戏物体被激活
- b.脚本组件被激活
- 2.调用时间、此数和作用
- LateUpdate在调用所有Update函数后调用,每秒调用60次左右,安排脚本的执行顺序
- 比如摄像机跟随,一定是人物先移动了,摄像机才会跟随
- 1.调用情况
-
8. OnDisable()
- 1.调用情况
- a.游戏物体被禁用
- b.脚本组件被禁用
- c.游戏物体被销毁
- 2.调用时间、此数和作用
- 满足调用情况时即时调用一次,用于一些对象的状态重置,资源回收与清理
- 1.调用情况
-
9. OnApplicatoinQuit()
- 1.调用情况
- a.在程序退出之前所有的游戏对象都会调用这个函数
- b.在编辑器中会在用户终止播放模式时调用
- c.在网页视图关闭时调用
- 2.调用时间、此数和作用
- 满足调用情况时即时调用一次,用于处理一些游戏退出后的逻辑
- 1.调用情况
-
10. OnDestroy()
- 1.调用情况
- a.场景或游戏结束
- b.停止播放模式将终止应用程序
- c.在网页视图关闭时调用
- d.当前脚本被移除
- e.当前脚本挂载到的游戏物体被删除
- 2.调用时间、此数和作用
- 满足调用情况时即时调用一次,用于一些游戏物体的销毁
- 1.调用情况
-
-
三、 游戏物体
-
1. 创建方式
- a.使用构造函数(声明+实例化) 创建一个空的游戏对象
- GameObject myGo = new GameObject("MyGameObject");
- b.根据现有的预制体(游戏物体)资源或者游戏场景已有的游戏物体来实例化
- GameObject.Instantiate(grisGo);
- c.使用特别的API创建一些基本的游戏物体类型(原始几何体)
- GameObject.CreatePrimitive(PrimitiveType.Plane);
- a.使用构造函数(声明+实例化) 创建一个空的游戏对象
-
2. 游戏物体的查找和获取
- 当前游戏物体
- this
- 当前游戏物体的组件
- this.script
- this.gameObject
- 对其他游戏物体查找(这时游戏物体必须是激活状态)
- a.通过名称查找
- GameObject mainCameraGo= GameObject.Find("Main Camera");
- Debug.Log("mainCamera游戏物体的标签是:" + mainCameraGo.tag);
- b.通过标签查找
- GameObject mainCameraGo = GameObject.FindGameObjectWithTag("MainCamera");
- Debug.Log("mainCamera游戏物体的名字是:" + mainCameraGo.name);
- c.通过类型查找
- No2_EventFunction no2_EventFunction= GameObject.FindObjectOfType<No2_EventFunction>();
- Debug.Log("no2_EventFunction游戏物体的名字是:" + no2_EventFunction.name);
- d.多数查找与获取
- GameObject[] enemyGos= GameObject.FindGameObjectsWithTag("Enemy");
- BoxCollider[] colliders= GameObject.FindObjectsOfType<BoxCollider>();
- a.通过名称查找
- 当前游戏物体
-
3. 功能
- Debug.Log("当前脚本挂载到的游戏物体名称是:"+gameObject.name);
- GameObject.Instantiate;
- 实例化游戏对象,预制体实例化
- GameObject.CreatePrimitive;
- 创建基本物体
- var plane : GameObject = GameObject.CreatePrimitive(PrimitiveType.Plane);
- Debug.Log("当前游戏物体标签是:"+gameObject.tag);
- Debug.Log("当前游戏物体层级是:"+gameObject.layer);
- 游戏物体的激活失活
- Debug.Log("当前游戏物体的状态是:"+gameObject.activeInHierarchy);
- Debug.Log("当前游戏物体的状态是:" +gameObject.activeSelf);
- gameObject.SetActive(true);
-
-
四、 组件
-
1. 组件的使用与获取
- a.组件都是在某一个游戏物体身上挂载的,可以通过游戏物体查找获取之后使用
- No5_Component no5_Component = gameObject.GetComponent<No5_Component>();
- No2_EventFunction no2_EventFunction = gameObject.GetComponent<No2_EventFunction>();
- Debug.Log(no2_EventFunction.attackValue);
- 获取脚本的值
- GameObject grisGo = GameObject.Find("Gris");
- Debug.Log(grisGo.GetComponent<SpriteRenderer>());
- Debug.Log(enemyGos.GetComponentInChildren<BoxCollider>());
- Debug.Log(enemyGos.GetComponentsInChildren<BoxCollider>());
- Debug.Log(enemyGos.GetComponentInParent<BoxCollider>());
- b.通过其他组件查找
- SpriteRenderer sr= g
- a.组件都是在某一个游戏物体身上挂载的,可以通过游戏物体查找获取之后使用
-
第三章 Unity基础之API
于 2022-11-04 09:19:21 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)