Table of Contents

Unity

游戏引擎

https://docs.unity3d.com/2022.2/Documentation/Manual/index.html


引擎设计

个人理解:在Unity的设计逻辑中,Component(组件)是非常重要的,一个Component实现了某一个方面的功能,Component是逻辑功能的承担者和最小单位,这样的设计也便于降低系统的耦合度,提升代码的重用度。脚本代码就是Component。这一点和Unreal不同,Unreal是通过继承来实现逻辑功能的,所以很明显的一个感受就是:写Unreal的时候,思维主体是Actor(GameObject),代码一般也都是在Actor类里面,要思考的是游戏内的某个,某类对象应该有什么逻辑,通过继承实现代码重用;写Unity的时候,除非是特别特定的脚本,只用在某个物体上,否则都是一个通用的功能,思维出发点是这个组件本身的逻辑功能,并不牵扯到特定的GameObject。继承关系的话,要一开始就设计好,后期不太方便改动;相比之下,Component就更优雅了,可以随意组合。(运行效率如何?)
关于Unity中的Script Component,它们是逻辑的主要承担者,GameObject是无法直接编辑逻辑的,但是继承自MonoBehaviour的类(可以作为Component的Script)其实已经封装了很多接口,例如GetComponent这种,是以这个Component所在的GameObject为出发点的,以GetComponent为例子:在Component中获取Component其实是不合逻辑的,本身的逻辑应该是Component的GameObject获取Component,但是获取GameObject的一步被封装起来了。那么写Component的逻辑的时候,也和直接写GameObject的逻辑有相似之处(以谁为逻辑的出发点)。

美术设计

资产管理

问题和想法:

  1. Load是资源加载,Instantiate是实例化游戏对象,二者具体的区别有哪些?实例化之前是不是都必须有加载的步骤?加载一份资源,是不是可以实例化多个游戏对象?游戏对象实例化之后,加载的资源是不是就可以卸载了?还是等游戏对象销毁的时候才能卸载资源?

外链资料:

  1. Unity学习—资源管理概览 https://warl.top/posts/Unity-Resource-Manage/ 归档
  2. Unity内存与资源管理(一) https://zhuanlan.zhihu.com/p/424210289 归档

物理仿真

用户界面

以下都是官方提供的UI系统:

一个好用的工具:RenderTexture
毛玻璃效果:背景模糊
滑动框(包括无限循环列表)
布局知识

程序逻辑

编辑器

在Unity编辑器中开发自己需要的功能。C#的代码在Editor中也可以运行。编辑器代码不应该被打包。

零散:

外链资料:

  1. Unity编辑器的一些不常用功能 https://zhuanlan.zhihu.com/p/95004242 归档

渲染

预制体

动画

相机

网络

AI

插件

Package

调试

经验

零散

需要整理!分散到各个板块中去!

Odt笔记(20221007)