整理来自UWA问答 资源放到resource下面有什么优势和劣势?
游戏本身资源不是很多,也不考虑会更新资源,就把资源都放到resource下面,resource下面有很多资源的时候会影响游戏启动时间吗?
答:Resource文件下,如果资源过多,确实会影响游戏的启动时间;
在resource下面的资源会不会占用内存?还是说要load出来instance之后才会算进内存里面?
答:Resource文件夹下的资源本身不会在启动后加载到内存中,资源是Resources.Load后被加载进内存的。但是需要指出的是,引擎启动时会创建一个Resource索引表,Resource文件夹下文件越多,其索引表也就越大,这个是会占用内存的;
资源打包成Assetbundle加载也快,也方便更新,那resource还有什么优势?
-
Resources 和 AB是两套不同倾向的资源管理策略,各自有适用的应用环境。
-
Resources可以看成一个默认加载的巨大AB,优点在于使用方便,不需要应用层维护资源依赖关系,缺点在于对更新不友好,内存敏感的场景下不便于细粒度控制资源的内存占用生命周期,此外还会影响游戏初始化速度。
-
AB可以提供更细粒度的资源控制策略,而且对于资源更新友好,但是缺点是管理麻烦,应用层需要维护依赖关系以及管理生命周期,稍不注意就容易出现资源泄露等问题。
-
Resources和AB之间有一条天然的鸿沟,那就是AB无法依赖到Resources里的资源,反之亦然。那么就带来一个问题,如果Resources里一个资源a需要更新,除了更新这个资源a外,还需要更新依赖这个资源的资源bcde等,还要更新资源a依赖的资源xyz等,进而,bcdexyz所依赖的以及被依赖的资源都需要更新,牵一发而动全身,简直是更新的噩梦。
-
对于资源更新频繁的网游,尽可能使用AB是首选,Resources下可以放一些无需更新且启动时就需要的资源,譬如登陆场景的loading图等,游戏启动的逻辑简洁不易出错。
-
对于无资源更新的单机游戏,也需要尽可能控制Resources下的资源量,避免污染游戏启动时间。