小心驶得万年船
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根华子吧,他的私房钱被老婆没收了,呜呜!
浙公网安备 33010602011771号