天天看点

unity 项目强制退出通知服务器,Unity WARNING 常见问题

有一个悬崖

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

只有程序员掉下去了

Warning 就是潜在的问题

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

命名 不能和unity 内置的名字重复,比如常见的name(会有警告),m_Name(会有报错日志,曾经出现过UI没办法在编辑器里关联这个UI对象);

子类中命名函数和父类中函数一致,注意需要改为override还是使用new 定义为子类新函数。

值类型对象是不需要和null进行比较的,因为返回的永远是true。作为if 条件的话,else语句永远不会被执行到。

定义了很多变量,但没有使用。特别是还通过逻辑处理给变量赋值了,却没有使用。多余的运算量。

代码编写注意,复制粘贴错误,无意义的定义赋值。

int nTempIndex = nTempIndex = (nShowLayer - 1) % m_arrSamsaraGroup.Count;

注释不需要的代码时候,要注意前面定义并且不再使用的变量也要一起注释掉,发否就会出现4 中的情况。

好多地方用了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;

}

}

弃用的逻辑,在代码中间直接return的。编辑器会报警告

warning CS0429: Unreachable expression code detected

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

代码逻辑,false 与其他没意义,这样书写会影响代码阅读性。

CommonDesigner.SetObjectVisable(m_aNearByReliveCDLabel.gameObject,false && !bInMirror);

通过查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;

}

unity 有些api 并没有跟版本升级api,会有警告log。