Acy求知Unity Week2_day2、3
相关博客:
https://blog.youkuaiyun.com/weixin_56166431/article/details/136347569
https://www.cnblogs.com/chenyu007/articles/18325424
https://blog.youkuaiyun.com/qq_42883222/article/details/115981479
https://blog.youkuaiyun.com/qq_55071342/article/details/127307129
脚本执行顺序
Script Execution Order设置
更改脚本执行的优先级
Edit->ProjectSettings->ScripExecutionOrder
拖动位置调整顺序
Default Time值越小,越先执行
缺点:依托于工程配置本身,如果脚本迁移,执行顺序信息就会丢失;
或者 DefaultExecutionOrder属性:
https://blog.youkuaiyun.com/s15100007883/article/details/101207442
https://blog.youkuaiyun.com/weixin_42069404/article/details/140691240
Update与LateUpdate在摄像机跟随中的应用
物体在Update中实现移动;相机跟随 在LateUpdate中实现移动;防止相机抖动。
·
·
序列化与数据存储
序列化:把对象转换为字节序列。用于传递对象、保存对象。
序列化:再次读取Unity时序列化的变量是有值的,不需要再次去赋值
[SerializeField]与public区别
public声明的变量在Inspector面板中是可见的
[SerializeField] 将原本不会被序列化的私有变量和保护变量变成可以被序列化的
在Inspector面板中显示public属性,序列化
已经被序列化(Serialize)的值,会显示在面板上
题外:
[NonSerialized]在面板中隐藏public属性,序列化
[HideInInspector]在面板中隐藏public属性,无序列化功能
https://www.cnblogs.com/CasualAttachment/p/7309327.html
PlayerPrefs\JSON\二进制持久化方案对比
PlayerPrefs
键值对存储(Windows存储在注册表中):PlayerPrefs.SetInt(“…”,1);
键:string;值:int float string
int Player = PlayerPrefs.GetInt(“…”); //读取
PlayerPrefs.DeleteKey(“…”);//删除
PlayerPrefs.Save();//游戏异常退出,调用save存储到硬盘中;游戏正常结束也要
JSON
一种符号表示法,把对象存储为JSON文件,本质是字符串。
键值对存储
键:string;值:int bool float 数组 对象
想要序列化私有变量 需要加上特性[SerializeField]
Json文档编码格式必须是UTF-8
JsonUtility.ToJson(…);//将类对象序列化为Json字符串
JsonUtility.FromJson<类名>(…);//读取文件中的Json字符串,将其转换为类对象
二进制持久化
节约存储空间,提升效率(便于网络通信)
字节数组转int类型:
byte[] bytes = BitConverter.GetBytes(…);
int i = BitConverter.ToInt32(bytes, 0);//从第0位开始
字节数组以指定编码格式转字符串:
byte[] bytes = Encoding.UTF8.GetBytes(“…”);
string s = Encoding.UTF8.GetString(bytes);