请教一下各位大佬,偶尔每帧执行的事件怎么优化
unity3d吧
全部回复
仅看楼主
level 4
a446537
楼主
private void Update()
{
if (xxxx=true) {
//可能一个小时执行不了2秒中,难道每帧都要判断,这也太浪费性能了吧...
}
}
2022年10月05日 07点10分
1
level 12
◆LinRiv
做一个计时器单独运行到点执行,然后重启计时器呗。
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分
NEKO电台
@小月映
协程插帧还需要调度,开销比没帧Update还是大一些的,不过优点是写起来方便
2022年10月11日 15点10分
level 5
KlmIn22
协程、定时器都是这么刷的。
协程你看那个生命周期图,除了什么awake之类的函数,是不是还看到yield XXX,那个就是给协程准备的,协程也是这么刷的
定时器是一般在update里+Time.deltaTime,加到一定程度执行,也是刷
你就这么用就行,那个约等于不消耗性能。
碰撞那才消耗性能。还有战斗里肯定要算距离,有距离计算就要开方,开方也消耗性能。你可以想想怎么开方计算,一个开方就顶一万个你那个判断。
2022年10月11日 06点10分
7
KlmIn22
一万个夸张了,在有一定精度的情况下,我觉得是你那条几百倍消耗时间是没问题的。牛顿开方法,最起码10个循环,不然精度不够,然后一个循环计算也少说也有10倍你那一条的消耗量。
2022年10月11日 06点10分
level 3
-剑二十三-
1.if的判断非常快,对性能影响很小
2.自定义事件主动触发
2022年10月11日 09点10分
8
level 11
NEKO电台
具体看你if里执行了什么操作,如果是CPU密集型的可以开一个Task(保证线程安全,unity也不能跨线程调用组件。其他的话上面老哥们说得挺到位
2022年10月11日 15点10分
9
level 3
D小狸猫
开个携程
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
1849223025
对于游戏来说,你这个所谓的耗性能根本可以忽略不计
2022年10月19日 06点10分
14
1