Unity的吐血巨坑之处 --- 发布版本和编辑器的纹理显示不一致

缓存。

编辑器的缓存和正式发布的时候缓存是一样的。这本来看起来没什么大碍,但是有经验的都知道编辑器里的纹理效果和实际发布的时候是不一样的,虽然这个我才刚刚知道。但是因为被缓存后,你在自己的机器上面看效果是正确的,但是放到别的机器上看就不对了,于是会陷入一个坑而找不到原因所在。虽然本身编辑器里面的效果和发布的时候不一样本身(有可能是插件导致)就是坑。但是有个方法可以在本机已经缓存纹理的情况下看到最终效果,那就是build and run

实际上我在build and run的时候已经看到效果不对了,但是没怎么在意,自以为只要最终运行没问题就行了,实际上也是出于害怕,因为如果是插件本身的问题,那么实际上是无解的。

这里说说具体遇到的情况和解决方法,我使用的2Dtoolkit和NGUI来做2D开发,但是发布到别的电脑之后游戏2D纹理显示不正常,变得非常模糊,起初还以为是分辨率导致,后来换了台一样分辨率的机器,还是一样。幸好这台机子运行过工程,才让我想到可能的原因 --- 缓存。因为那台机子原来运行的时候是正常的,只因为重启后就运行不正常了,只能说明原来正常的显示是因为使用了编辑器正常显示的缓存。可是就算知道这个又怎么解决呢?仍然找不到解决的办法。

无奈之下,尝试把一张2dtoolkit的运行时Sprite换成Unity自带的Sprite看看,结果显示正确了。难道要全部换成Unity自带的精灵?那几乎要重写了!用过2Dtoolkit的都知道那个玩意和Unity自带精灵差别太大了。如果是这样难道是插件的问题吗,但是2dtoolkit和NGUI同时出现这样的问题显得不可思议,而NGUI可以说是全线崩溃,所有纹理显示都是模糊的。于是插件问题的可能性很小,肯定是哪里设置错了。

经过各种尝试后最终发现,如果把NGUI的纹理设置成Unity自带的Sprite属性就显示正常了,终于找到突破口。这时候我才发现,2dtoolkit能正常显示的纹理,和不正常的对比,就是纹理属性的区别,2dtoolkit默认是用Advance加一些设置,实际效果应该和Unity的Sprite是一样的。

这让我想到最初用Unity自带的GUI的时候,渲染2D纹理需要改纹理属性,而Unity默认的纹理属性是Texture,我相信插件应该都是改过属性的,可能是因为SVN传资源的时候,或者移动资源目录的时候导致部分纹理资源的属性被重置了。

但是即使在这样错误的设置下面,编辑器里的效果依然一直是正确的,这或许只能回头说还是插件的问题吗?也许是插件的ExecuteInEditor模式导致的,虽然我不知道怎么解释无论纹理设置对不对,每次打开都是正确的。

build and run才能看到最正确的效果,总之记住这个了。但是正是因为开发的东西build and run 没法看到完整流程才没有使用它,所以说实际上并不是非常好用。

猜你喜欢

转载自blog.csdn.net/fg5823820/article/details/37739485
今日推荐