我读过一篇文章10000 UPDATE() CALLS。 作者使用UpdateManager。它有Update
方法,在所有其他对象的MonoBehaviours中调用Update
方法。它的工作速度比分别从每个MonoBehaviour调用Update
方法快。如何添加场景的所有MonoBehaviours到列表中?
该经理的样子:
private ManagedUpdateBehavior[] list;
private void Start() {
list = GetComponents<ManagedUpdateBehavior>();
}
private void Update() {
var count = list.Length;
for (var i = 0; i < count; i++) {
// UpdateMe
list[i].UpdateMe();
}
}
和每一个对象现在包含的代码组件:
public class ManagedUpdateBehavior : MonoBehaviour {
// some variables
public void UpdateMe() {
// some logic
}
}
这没关系,如果5-6-7-8-对象将是有分量。
但如果我有100个对象? 1000? 10000?
如何找到和场景的所有对象添加所有ManagedUpdateBehaviors
?我应该在On Start
上使用递归方法吗?因为每个对象可能包含其他对象的脚本,它们可能含有其它对象等..无限嵌套
也有一些物体可以被动态实例...如何在他们的单加入的经理吗?什么是正确的方式?
您可以创建一个被管理的monobehaviours的静态列表,并在每个monobehaviour的'Start()'函数中添加它到该列表中,然后从管理器中的列表中读取。 –
@YotamSalmon Neee。我不认为这是个好主意。如果我有50..100个Monobehaviours会怎么样?手动添加代码到每个脚本?如果我改变了主意,该怎么办?手动删除?改变我的想法吗?))它不是生产性的.......'java 8'具有可以包含默认方法的接口(带有实现)...如果C#有类似的东西,那将是很好的....那会更合适,我认为 –