Unity

Unity Tips(持续更新)

2022-09-02 #Unity

本文迁移自旧站,保留当时的学习记录;涉及版本与实践结论的内容会在后续复查中逐步更新。

FormerlySerializedAs特性

作用就是防止置序列化的数据在变量重命名后丢失 打个比方:

1
2
3
4
public class FormerlySerializedAsTest : MonoBehaviour
{
public string MyName;
}

定义了一个 MyNamestring,在面板上赋值为 “打个大西瓜” 然后出于某种原因需要重命名 MyNameMyNickname,那么面板上赋值的 “打个大西瓜”就没了,变成了空

为了让MyNickname继承之前的值,就需要加上 FormerlySerializedAs 特性

1
2
3
4
5
public class FormerlySerializedAsTest : MonoBehaviour
{
[FormerlySerializedAs("MyName")]
public string MyName;
}

但是要注意参数,也不是随便传一个string的 ,看看定义 FormerlySerializedAs(string oldName) ,参数名叫oldName,也就是旧的名字,重命名前的名字,所以我这里传的 ”MyName“ ,这样就相当于保存了MyName序列化的数据,然后再重命名为 MyNickname 时,就会把之前MyName序列化的数据赋值给 MyNickname

Vector3 UnityEngine.Random.onUnitSphere

随机返回单位球表面的点

Vector3 UnityEngine.Random.insideUnitSphere

随机返回单位球内的点

Vector2 UnityEngine.Random.insideUnitCircle

随机返回单位圆内的点 随机返回单位圆内的点

判断空

在判断一个对象是否为null时,一般有以下几种方式

  1. ==
  2. Equals
  3. System.Object.ReferenceEquals

对于Unity的对象,比如 GameObject MonoBehavior ,使用 System.Object.ReferenceEquals 的速度更快,而1和2两种方式会产生GC,速度也更慢。 对于Unity的对象,比如 GameObject MonoBehavior ,使用 System.Object.ReferenceEquals 的速度更快,而1和2两种方式会产生GC,速度也更慢。

评论
分享