unity3d消除你不想要的黄色警告

译者注:此方法并不一定适合所有场合,大家可以当作参考。

 


警告在任何一种编译型语言中都非常非常的重要:它们告知你计算机已经检查了你的代码,而且意识到你“很可能”创造了一个bug;它们甚至提供一些关于这个bug会是什么的信息。

但是计算机又不是很确定它所警告的是不是bug——如果是确定的,那它就是一个编译错误(红色的)了。所以,在Unity中,警告是黄色的,而且是“不确定的”。但是,在有些情况下,你明明知道不是bug却要报出警告,这是非常恼人的。绝大多数集成开发环境都能让你设置警告的开与关,Unity却做不了。。。这里就是讲我们怎么解决这个问题

注:全局的警告关闭技术可用在很多地方,比如自定义工程范围内的#defines——更多信息在:Unity Forum thread on SMCS etc

确保你真的要这样做                       

如果你知道你在对编译警告做什么,跳过这一节。

其余的每一个人:请三思。一个警告意味出现了下面的某种情况:
  •       你有一个写到一半的类或者算法,所以有一些未被使用的代码,等等。这不是BUG。
  •       你在以一种不寻常的方式使用编程语言。有可能是个BUG
          1.如果该不寻常使用是个意外:很有可能是个BUG
          2.如果该不寻常使用是深思熟虑的,专业级别的:不是BUG
  •       你本要敲一个变量,却意外地写成了另外一个变量的名字。严重的,常见的BUG
(特别要注意最后一条:这是最糟糕的bug,你看上一百遍也看不出有哪里是“错误的”,而且计算机也报告是语法正确的!)

所以,即使很多的警告是“误报”(本来就不是bug,而且你也知道),但也有很多是“警告对”的,而且它们是你抵御某些险恶bug的最后防线。要在个案的基础上对待每一个警告!


选项1:在所有地方关闭警告
作为一个资深的C/C++程序员,这对我非常有用。我是这样写代码的:


基于C语言和类C语言的内在功能,第4行的速写“;//”就能让你开启/关闭一行代码,只需敲4下键盘。在现代的集成开发环境中,通常有更好的方法实现该效果,但它不失为一个小而有效的例子。 
这个代码在Unity控制台触发了一个警告:


对于这种情况的警告,我们要在所有的地方关闭它;因为这种写法是我正在使用的一种深思熟虑的技术,所以我不需要(或者说不想要)这种警告。我想到了这种警告的后果:它以为是你意外地在“if”语句的同一行写了一个分号。我范这种错误,那是快15年前的事了;我有信心在短期内不会再范这样的错误。

1.        创建文件“smcs.rsp”
2.        保存文件到你工程的Assets文件下面
3.        一行写一个你要废止的警告(写法看下面)
4.        修改任意一个文件,Unity会重新现场加载并遵从你的新设置

smcs.rsp的内容:
-nowarn: 1234

“1234”就是Unity控制台里出现在警告消息里的那个数字——在我的案例中,我们最后得到的是:


所以在文件里,我写上:
-nowarn:0642 

注:这只作用于游戏脚本。如果对编辑器脚本做这样的操作,你要使用另外一个文件——gmcs.rsp


选项2:只在一个文件中关闭警告
举个例子,你在使用一个新的游戏功能,而且正在做调整。你有一堆正在调整的变量,有时在代码中用到,有时又不用到。你会得到这个恼人的警告:


只对这个文件,你要忽略这个特定的警告。当你完成了这个长时段的调整,你又要重启这个警告。
1.        来到文件的最顶端
2.        对每一个你要关闭的警告添加一行#pragma语句:
#pragma warning disable 1234;
再一次,这个数字是Unity控制台里出现在字母“CS”之后的任何数字。在我的例子里,是0219。


选项3:在单行代码上关闭警告
(或者是一整块代码) 
这跟选项2类似,除了:
1.       找到你要关闭警告的语句行
2.       在代码行前,为每一个警告添加一行关闭警告的#pragma语句
3.       在代码行后,为每一个警告添加一行开启警告的#pragma语句

原文作者:adam
原文出处:http://t-machine.org/index.php/2016/04/16/unity3d-remove-yellow-warnings-you-dont-need-unitytips/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值