Unity WARNING 常见问题

有一个悬崖

旁边立个牌子-上面写着-warning

只有程序员掉下去了

Warning 就是潜在的问题

当前项目的warning log 大多数都是定义了变量但未使用,也有少量的代码编写问题。尽量减少warning,对于无法避免的warning ,可以添加#pragma warning disable屏蔽当前警告。但不能滥用,对于新出现的warning 要有针对的解决,尽量做到无 warning。通过查看warning log 可以发现很多代码问题,通过项目前100多个warning归纳如下:

  1. 命名 不能和unity 内置的名字重复,比如常见的name(会有警告),m_Name(会有报错日志,曾经出现过UI没办法在编辑器里关联这个UI对象);
  2. 子类中命名函数和父类中函数一致,注意需要改为override还是使用new 定义为子类新函数。
  3. 值类型对象是不需要和null进行比较的,因为返回的永远是true。作为if 条件的话,else语句永远不会被执行到。
  4. 定义了很多变量,但没有使用。特别是还通过逻辑处理给变量赋值了,却没有使用。多余的运算量。
  5. 代码编写注意,复制粘贴错误,无意义的定义赋值。
int nTempIndex = nTempIndex = (nShowLayer - 1) % m_arrSamsaraGroup.Count;

  1. 注释不需要的代码时候,要注意前面定义并且不再使用的变量也要一起注释掉,发否就会出现4 中的情况。
  2. 好多地方用了try{}catch(Exception e),却没有打印出exception内容。对于异常情况,能处理的尽量处理,是在不能处理了在用try / catch。参考
old:
int num = red_world_min_currency;
try
{
    num = int.Parse(m_uiNeedAncientJadeInput.value);
}
catch (Exception e)
{

}

new:
int num = red_world_min_number;
if (m_uiRedBagNumberInput!= null)
{
    if (!int.TryParse(m_uiRedBagNumberInput.value, out num))
    {
        num = red_world_min_number;
    }
}

  1. 弃用的逻辑,在代码中间直接return的。编辑器会报警告
warning CS0429: Unreachable expression code detected

要么就注释掉后面的代码,如果不想注释,那就加上 #pragma warning disable

  1. 代码逻辑,false 与其他没意义,这样书写会影响代码阅读性。
 CommonDesigner.SetObjectVisable(m_aNearByReliveCDLabel.gameObject,false && !bInMirror);

  1. 通过查warning log 也可以发现问题。如下,log 为
 The variable `tmpValue' is assigned but its value is never used

可以发现本意是用来做大小值交换的,却没有使用中间值交换,结果肯定是有bug的。

float tmpValue = 0;
if (fMinValue > fMaxValue)
{
    tmpValue = fMinValue;
    fMinValue = fMaxValue;
    fMaxValue = fMinValue;
}

  1. unity 有些api 并没有跟版本升级api,会有警告log。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容