代码习惯

C# 格式

  • 全局变量:_newList
  • 临时变量:newlist
  • 函数:UpdateList()
  • 静态变量:NewList

用 foreach 而不是 for 去遍历

善用 GetComponentsInChild

  • GetChild更容易受到美术调整的影响

i++ 和 ++i

  • i++

    1
    2
    3
    var t = i;
    i += 1;
    return t;
  • ++i

    1
    2
    i += 1;
    return i;
  • i = i + 1

    1
    2
    var t = i + 1;
    i = t;

++i不需要给中间变量赋值,性能会好一点

From:https://blog.csdn.net/Dr_Unknown/article/details/51363196

不要一边遍历一边删除

TimeLine Directior 的单位是秒

Bug

unity 空引用异常

From大佬:Unity基本百分之90的报错都是 NullReferenceException: Object reference not set to an instance of an object,非常容易碰到了属于是,不过能复现出来的话这类貌似是最好解决的

  • 断点断到位置的每个变量都可能为空,包括被赋值的对象,这个对象的组件,赋值的值,均需要检查
  • 提前加保护:判断若未空则返回 if (x == null) return
原因 解决
空引用 断点找到空引用位置,可能是组件可能是对象
对象名字写错 包括大小写,末尾的空格,名字写错
对象隐藏 设置sective
名字重名 没遇到过,一般不运行就会直接报错吧
错误的引用周期 Start时引用到了另一个脚本未Start的脚本,将被引用的放到Awake

不要猜Bug

  • 与其从功能开始的地方猜测问题在哪里
  • 不如直接从调用的函数位置开始打日志,通过查看堆栈判断
  • 这样不需要捋顺所有逻辑,从每个调用的地方判断