元数据

Unity 3D游戏开发(第2版)

  •  Unity 3D游戏开发(第2版)|200
  • 书名: 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

读书笔记

本书评论