小心驶得万年船
1、if做边界或者异常判断的时候,一定不要忘了在else里打上log,加一句log远比出了bug一遍遍的缕代码逻辑的成本低得多。
if (obj != null) { } else { Debug.Log("obj is null"); }
2、在用for循环生成线程时,如果用到了“i”,要给他一个临时变量接收着,不然会出错,如:
void Wrong() { for (int i = 0; i < 10; i++) { new Thread(() => { Debug.Log(i); }).Start(); } }
结果有重复值且并不是每个 i 都被打印了出来
正确的写法是
void Right() { for (int i = 0; i < 10; i++) { int j = i; new Thread(() => { Debug.Log(j); Thread.Sleep(100); }).Start(); } }
可以看出结果是正确的
3、慎用字段UnityWebRequest .responseCode
想获取http错误码时,慎用该字段,因为该字段会在http出现“Cannot resolve destination host”错误时,返回0,可能和你们自己定义的成功的状态码有冲突
4、结构体不能等于null,想给结构体一个默认值,可以用default关键字
using UnityEngine; public class Test : MonoBehaviour { void Start() { //StructTest structTest = null; StructTest structTest = default(StructTest); Debug.Log(structTest.a);//a=0 } } public struct StructTest { public int a; }
5、做存档数据的时候,不要使用 BinaryFormatter 序列化持久数据,因为它可以随C#版本变化,而且使数据难以阅读。
6、数据的保存、类与类之间的传递等可以考虑使用ScriptableObject
7、Directory.Move在跨磁盘时会报错:Access to the path is denied,比如从C盘移动到D盘,就会报错,应该用file.copy的形式将每个文件都烤过去,再删除掉原来的文件夹的形式,File.Move可能也有同样的问题,没试
博客园Jason_c微信打赏码
如果本篇文档对你有帮助,打赏Jason_c根华子吧,他的私房钱被老婆没收了,呜呜!
![](https://files-cdn.cnblogs.com/files/Jason-c/%E5%BE%AE%E4%BF%A1%E6%89%93%E8%B5%8F%E7%A0%81.bmp)