Unity中代码的优化

如今,大家电脑配置不断提高,似乎优化早就淡出了小游戏的世界。一开始我也是这么认为的,直到我硬生生地把轮回打包成apk以后……惨不忍睹的帧率——每秒2帧——让我意识到,即便再简单地小游戏,也应该做一下优化= =

 

在Unity的优化过程中,我一般都会注意一下几点:

1.Update Find问题

当时一开始写的时候没注意,想到什么就填什么进去。于是Update和FixedUpdate中掺杂了大量的Find函数。这就相当于每一帧(约为0.015秒),游戏都要执行一次把场景中的所有物体找一遍……这不仅是资源的浪费,更是让游戏变卡的一个罪魁祸首。

解决方法:

1)一开始在Start中先Find好,然后先储存在一个变量中。后续的使用就直接调用变量。

2)如果物体是实时生成的,没有办法在一开始就存好。那么建议先弄一个List,然后每生成一个物体,就把这个物体存到List中,从而避免Find的使用。

3)如果实在实在没有办法,请尽量吧要找的物体标一个共同的Tag。然后用FindWithTag代替Find。这样做不仅效率会高很多,而且比Find要占用更少的资源。

 

2.阴影问题

冬日中,最主要的问题就是阴影。所以细心的同学在看视频的时候应该发现我把两边装饰的物体的Cast Shadow属性关掉了;或者发现两边的蓝色装饰并不会投射影子。其实光影,也是一个很重要的原因。在官方的安卓版跳舞的线中就能明显感受到——即使开了最高画质,也是没有阴影的。可能是一些特殊原因,但个人认为因为安卓系统的参差不齐,可能也有降低配置的因素在里面。

解决方法:

1)关掉投射阴影的属性。

2)将场景中不会动的物体设置为Static。

 

3.Static的设置

emmm好像和2重叠了……

对于游戏中不需要交互的物体来说,如果在给他们分配可以交互的功能是不是有些浪费了?因此,我们可以提前准备好这些物体的相关效果,不用在游戏中实时生成。只要把物体的属性设置成Static即可。但是注意,这样做可能会使得打包的速度变慢。

 

以后有遇到别的方法再在这里更新

目前评论:2   其中:访客  0   博主  0


    Warning: A non-numeric value encountered in /www/wwwroot/i.pegasi.top/wp-content/themes/begin/inc/function/comment-template.php on line 31
  1. avatar Pegasus

    Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/wwwroot/i.pegasi.top/wp-content/themes/begin/inc/function/setting.php on line 1367
    • avatar 测试

      Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/wwwroot/i.pegasi.top/wp-content/themes/begin/inc/function/setting.php on line 1367

      @Pegasus

评论加载中...

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情