请教一下各位大佬,偶尔每帧执行的事件怎么优化
unity3d吧
全部回复
仅看楼主
level 4
a446537 楼主
private void Update()
{
if (xxxx=true) {
//可能一个小时执行不了2秒中,难道每帧都要判断,这也太浪费性能了吧...
}
}
2022年10月05日 07点10分 1
level 12
[你懂的]做一个计时器单独运行到点执行,然后重启计时器呗。
2022年10月05日 13点10分 2
level 5
我也想知道[小乖]
只知道FixedUpdate()一秒执行60帧,可以改一秒执行30帧,是不是也可以改一秒执行一帧。
2022年10月10日 14点10分 3
level 7
不要太小看cpu了
2022年10月11日 01点10分 5
level 7
协程,等待时间半小时一次。
IEnumerator 名字()
{
while (true)
{
//你的判断内容----------
yield return new WaitForSeconds(1800f);
}
}
2022年10月11日 02点10分 6
好兄弟猜猜携程里面是怎么判断的,也是帧刷
2022年10月11日 03点10分
@我是那鸡 这样也能减少一些消耗吧,我看官方文档里是建议不需要每帧执行的代码用协程处理减少开销,比如判断周围有没有敌人
2022年10月11日 04点10分
@小月映 这些开销其实蚊子腿,几乎可以忽略不计的。unity大头一直在渲染和物理
2022年10月11日 11点10分
@小月映 协程插帧还需要调度,开销比没帧Update还是大一些的,不过优点是写起来方便
2022年10月11日 15点10分
level 5
协程、定时器都是这么刷的。
协程你看那个生命周期图,除了什么awake之类的函数,是不是还看到yield XXX,那个就是给协程准备的,协程也是这么刷的
定时器是一般在update里+Time.deltaTime,加到一定程度执行,也是刷
你就这么用就行,那个约等于不消耗性能。
碰撞那才消耗性能。还有战斗里肯定要算距离,有距离计算就要开方,开方也消耗性能。你可以想想怎么开方计算,一个开方就顶一万个你那个判断。
2022年10月11日 06点10分 7
一万个夸张了,在有一定精度的情况下,我觉得是你那条几百倍消耗时间是没问题的。牛顿开方法,最起码10个循环,不然精度不够,然后一个循环计算也少说也有10倍你那一条的消耗量。
2022年10月11日 06点10分
level 3
1.if的判断非常快,对性能影响很小
2.自定义事件主动触发
2022年10月11日 09点10分 8
level 11
具体看你if里执行了什么操作,如果是CPU密集型的可以开一个Task(保证线程安全,unity也不能跨线程调用组件。其他的话上面老哥们说得挺到位[太开心]
2022年10月11日 15点10分 9
level 3
开个携程
2022年10月11日 15点10分 10
level 13
emm不能用事件触发吗[汗]
2022年10月12日 03点10分 11
level 4
遇到性能瓶颈再去考虑优化,东西还没做出来就想这个只是在折磨自己
2022年10月14日 04点10分 12
level 2
一行instantiate顶你几百行if
2022年10月19日 06点10分 13
level 7
对于游戏来说,你这个所谓的耗性能根本可以忽略不计
2022年10月19日 06点10分 14
1