元数据
Unity 3D游戏开发(第2版)
- 书名: Unity 3D游戏开发(第2版)
- 作者: 宣雨松编著
- 简介: Unity是一款市场占有率非常高的商业游戏引擎,横跨25个主流游戏平台。本书基于Unity 2018,结合2D游戏开发和3D游戏开发的案例,详细介绍了它的方方面面,内容涉及编辑器、游戏脚本、UGUI游戏界面、动画系统、持久化数据、静态对象、多媒体、资源加载与优化、自动化与打包等。本书适合初学者或者有一定基础的开发者阅读。
- 出版时间 2018-09-01 00:00:00
- ISBN: 9787115492944
- 分类: 计算机-软件学习
- 出版社: 人民邮电出版社
- PC地址:https://weread.qq.com/web/reader/2e332790724b5dd32e3a16c
高亮划线
3.1.3 拓展布局
- 📌 需要说明的是,在方法前面添加[InitializeOnLoadMethod]表示此方法会在C# 代码每次编译完成后首先调用 ^38493651-50-1792-1866
- ⏱ 2023-11-01 15:12:36
3.1.4 监听事件
-
📌 Project视图中的资源比较多,如果不好好规划,资源就会很凌乱。有时候,我们可能需要借助程序来约束资源,这可以通过监听资源的创建、删除、移动和保存等事件来实现。
- ⏱ 2023-11-01 15:13:10
-
📌 UnityEditor.AssetModificationProcessor
- ⏱ 2023-11-01 15:13:21
3.2.1 拓展菜单
- 📌 菜单中已经包含了系统默认的一些菜单项,我们拓展的原理就是重写MenuItem的自定义路径。Create按钮下的菜单项都在GameObject路径下面,所以只要开头是GameObject/xx/xx,均可自由拓展 ^38493651-53-1043-1187
- ⏱ 2023-11-03 10:12:13
3.2.2 拓展布局
- 📌 工作原理就是监听EditorApplication.hierarchyWindowItemOnGUI渲染回调 ^38493651-54-456-523
- ⏱ 2023-11-03 10:12:41
3.2.3 重写菜单
-
📌 Event.current来获取当前的事件
- ⏱ 2023-11-03 10:23:19
-
📌 EditorUtility.DisplayPopupMenu用于弹出自定义菜单
- ⏱ 2023-11-03 10:23:42
-
📌 Event.current.Use()的含义是不再执行原有的操作
- ⏱ 2023-11-03 10:24:44
4.2.3 脚本更新与协程任务
-
📌 Update():每一帧执行时,都会立即调用此方法。LateUpdate():Update()方法执行后,都会调用此方法。FixedUpdate():固定更新。默认情况下,系统每0.02秒调用一次,具体的间隔时间可以在TimeManager中配置。在导航菜单栏中选择Editor→Project Settings→Time菜单项,即可打开Time Manager
- ⏱ 2023-11-03 17:48:08
-
📌 Unity的脚本只支持单线程,不过它引入了C# 语言协程的概念,可以用来模拟多线程,而不是真正的多线程。
- ⏱ 2023-11-03 17:48:53
4.3.1 脚本的执行顺序
- 📌 Awake()方法适合做初始化,而在Start()方法中才适合安全地访问其他脚本数据 ^38493651-100-871-933
- ⏱ 2023-11-03 17:50:51
4.3.2 多脚本优化
-
📌 这些脚本都需要执行生命周期的方法,此时Unity需要遍历它们,然后再反射调用每个脚本的方法。
- ⏱ 2023-11-03 17:51:12
-
📌 所以我们能做的优化就是避免挂太多的脚本,避免在脚本中写入这种空方法,如果不需要用,就把它删除掉
- ⏱ 2023-11-03 17:51:23
4.4.1 查看数据
- 📌 Mixed表示混合模型,而Force Binary表示二进制格式。这里推荐使用Force Text,它表示所有资源可以使用文本打开,这个设置并不会影响最终游戏的发布效率,反而编辑模式下查看资源结构会更方便。 ^38493651-103-385-488
- ⏱ 2023-11-03 17:52:44
4.4.2 私有序列化数据
-
📌 因为对象都设置为private数据,所以外部都无法访问,如果想使用拓展编辑器来编辑这些数据的话,可以使用SerializedObject和SerializedProperty来获取设置数据。
- ⏱ 2023-11-03 17:53:26
-
📌 serializedObject.FindProperty()
- ⏱ 2023-11-03 17:53:45
-
📌 public属性不想在面板中显示的话,可以设置[HideInInspector]
- ⏱ 2023-11-03 17:53:53
4.4.4 监听部分元素修改事件
- 📌 我们来监听Targets元素变化事件,将需要监听的GUI元素写在EditorGUI.BeginChangeCheck() ^38493651-106-421-487
- ⏱ 2023-11-03 17:55:37