我尝试过创建的时候用scheduleOnce把要加载到场景的100+个prefab对象分成三个部分来加载, 第一部分不用scheduleOnce, 后两次是1秒和2秒之后加载, 不会卡得那么明显, 但是任然会卡!!!
我现在就是使用对象池的, 但是就是实例化加载到场景的时候,要实例化的数量有点大,所以会卡。
你说的分帧实例化怎么说?是指将要实例化的资源分到每一帧实例化一定数量的意思吗?
是的。但最簡單的的策略的。不創建太多物體。雖然代碼會看起來很凌亂
有些極端的時候
甚至矩形會寫成
var xList:Array
var yList:Array
var wList:Array
var hList:Array
var rList:Array
甚至所有的幾何函數能採用調用
fun(x, y)
就絕不寫成調用
fun(point)
如果無法避免使用point返回
我都會採用這種形式。可以從外部共享一個對象進行結果運算來避免創建物體。
fun(arg1, arg2, ?result:Point):Point;
你的意思是说point这种参数消耗会比直接用x,y消耗高是吗?
是啊。
一個node 對象至少裡面也有幾十個對象吧。
首先你自己得清楚 这个问题是跑逻辑导致的掉帧 还是渲染多到掉帧的
应该是一下子渲染太多导致的, 因为我的代码是通用的, 渲染超过30的时候就会在加载的时候掉帧到40以下, 渲染少的时候基本可以维持在50以上。
drawcall 过高吧 ?
10以下
typeScript异步了解下 也许可以
说来惭愧,我是拿起来js就用的, 语法那些什么机制啊 特性啊都没去看过!
大佬,怎么解决的?目前也是一次性渲染多个预制体很卡顿
请问大佬解决了吗。我现在也是一次渲染大佬预制体就会很闲的掉帧。也是用的对象池但是没啥用
delay值要不要 0.01 * i
不需要啊 这样做是为了开启线程避免主线程阻塞
没有用啊。当我有大量资源实例化的时候还是会卡顿
请问最后是怎么接解决的呢
建议你再仔细研究下对象池的用法,你目前这个写法,等于没用对象池
真的假的啊 我这边本来一帧要创建40个卡牌,会顿1s左右 分帧创建后 就是秒开了 。。 你咋写的 代码贴出来
我都忘记当时做什么游戏的问题了!!!!
你说说你的需求 我看看我懂不懂