SciptableObject
根据Unity官方文档的描述,ScriptableOjbect是当我们想创建一个不需要绑在特定game objects上的对象时所使用的类。
ScriptableObject可以当做数据容器来使用,它不需要绑定在场景的特定GameObject上。我们可以将ScriptableOjbects当做assets保存在我们的项目中。
通常来说,ScriptableOjbects主要用来保存数据,但同时我们也可以用它来在场景中生成序列化对象
using UnityEngine;
using System.Collections;
public class MyScriptableOjbectClass : ScriptableObject
{
public string objectName = "ScriptableObject";
public bool isColor;
[MenuItem("MyTool/tool")]
static void tool()
{
Debug.Log("Tool is running");
}
}
通过上述代码将在Editor中新增一项菜单,通过点击tool菜单项,我们就可以调用tool函数,执行相关运算。
脚本序列化
原文:https://docs.unity3d.com/Manual/script-Serialization.html
序列化可以自动地将数据结构或者对象状态转化为一种Unity引擎可以保存并再创造的格式。Unity中一些功能也使用了序列化,比如保存和载入,inspector窗口,prefabs.
由此可见,数据的组织方式将影响Unity序列化这些数据,从而对项目的性能造成很大影响。
理解热重载(hot reloading)
Hot reloading
热重载是一种当编辑器打开的情况下,我们创建或者修改脚本,脚本逻辑可以马上被应用在项目中,而不需要为了让改动生效重启游戏或者Editor。
当我们改动并保存一个脚本时,Unity引擎热重载所有当前已经被载入的脚本数据。它首先在所有的载入脚本中保存可序列化的变量,然后在载入脚本之后,它将恢复这些变量。而所有不能够被序列化的数据将在热更新之后丢失。