Unity新手村—开发小技巧记录(一)
作者:互联网
第一篇博客它来了!学习unity的过程中,总会遇到一些零碎的知识点和技巧,在此整理记录,方便日后查看,Unity版本:2018.3.2f1。
因为还是个萌新,如果有写的不对或不好的地方,敬请谅解。
1.使用RuntimeInitializeOnLoadMethod特性的静态方法会在场景加载后直接调用(这个脚本不需要挂载到物体上)
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] public static void Test() { Debug.Log("start game"); }
2.使用SerializeField将私有变量暴露在检视面板中,使用HideInInspector特性在检视面板中隐藏公有变量
[SerializeField] private int PrivateVar; [HideInInspector] public int PublicVar;
3.用以下代码获得一个随机的布尔值
bool x= (Random.value > 0.5f);
4.将动画的speed属性设为-1即可倒放动画
5.如果只是存储一些变量的话,建议使用结构体而不是类,以减少垃圾回收
6.以下代码可以在第一个协程结束时启动第二个协程
IEnumerator First() { yield return StartCoroutine(Second()); } IEnumerator Second() { yield return 0; }
7.以下代码可以让编辑器暂停,方便调试
EditorApplication.isPaused = true;
8.可以将文件夹的快捷方式拖入项目,方便打开
9.使用CompareTag来比较标签而不是obj.Tag=="player",效率更高
GameObject obj; if (obj.CompareTag("player")) { Debug.Log("Is Player"); }
10.Debug支持一些简单样式
Debug.Log("<color=red>Oh!!!</color>");
11.怎么忽略控制台警告
先查看警告中的代号,就是CS之后的数字,这里是0414,再到脚本中最上方加上以下代码
#pragma warning disable 0414
回到Unity编译,就不会再弹出警告了
12.不要频繁使用Camera.main,它其实就是......
Camera.main = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();
13.比较距离时不要用Vector3.distance
Vector3.sqrMagnitude用于得到向量长度未开方的值,使用(a - b).sqrMagnitude和距离平方作比较,这样不用做开方运算,效率更高
Vector3 a; Vector3 b; float distance = 1f; void Update() { if ((a - b).sqrMagnitude < distance * distance) { //todo } }
14.给检视面板添加一些效果
[Header("等级")] //给变量加上标题文字 public int level; [Space] //空行 [TextArea] //多行输入框 public string Des; [Range(0,10)] //滑动条 public float Speed=1; [Tooltip("生命值")] //鼠标移到变量上出现的提示 public int Hp = 100;
15.在项目中搜索同类型资源
在Project视图上方的搜素栏可以按类型搜索资源,使用“t:资源类型”,比如t:scene可以搜索到所有场景,t:script可以搜索到所有脚本
还可以在前面加上资源名称的子字符串,比如test t:scene可以搜索所有名字中带“test”的场景
第一篇暂时先写这么多,以后再继续更新其他小技巧。
标签:distance,新手村,技巧,int,Vector3,Unity,搜索,Debug,public 来源: https://www.cnblogs.com/LiveForGame/p/10475743.html