Unity3d 为什么缓存游戏对象更快? 私有游戏对象mGo; void Start() { this.mGo=this.gameObject; } void OnGUI() { if(GUILayout.按钮(“T1”)) { 浮动时间=time.realtimeSinceStartup; int s=0; 对于(int i=0;i
这是一个简单的演示。 我正在阅读其他源代码,然后找到这个。 我想知道为什么T1和T2不同?Unity3d 为什么缓存游戏对象更快? 私有游戏对象mGo; void Start() { this.mGo=this.gameObject; } void OnGUI() { if(GUILayout.按钮(“T1”)) { 浮动时间=time.realtimeSinceStartup; int s=0; 对于(int i=0;i,unity3d,Unity3d,这是一个简单的演示。 我正在阅读其他源代码,然后找到这个。 我想知道为什么T1和T2不同? 有人可以告诉我原因。this.gameObject是一个属性 private GameObject mGo; void Start() { this.mGo = this.gameObject; } void OnGUI() { if (GUILayout.Button("T1")) { float time = Time.realtimeSinceStart
有人可以告诉我原因。this.gameObject是一个属性
private GameObject mGo;
void Start()
{
this.mGo = this.gameObject;
}
void OnGUI()
{
if (GUILayout.Button("T1"))
{
float time = Time.realtimeSinceStartup;
int s = 0;
for (int i = 0; i < 100000; i++)
{
s = this.gameObject.layer;
}
Debug.Log("T1:" + (Time.realtimeSinceStartup - time));
}
if (GUILayout.Button("T2"))
{
float time = Time.realtimeSinceStartup;
int s = 0;
for (int i = 0; i < 100000; i++)
{
s = this.mGo.layer;
}
Debug.Log("T2:" + (Time.realtimeSinceStartup - time));
}
}
因此,这是一种方法,在使用方法时会增加一些开销。
首先,程序需要存储当前索引,然后跳转到方法位置,将参数堆在堆栈上并在方法中运行代码。然后,它会产生相反的效果,返回到它停止的程序
除此之外,可能还有一些额外的检查在财产
使用缓存版本意味着您正在使用直接访问的引用 this.gameObject是一个属性
private GameObject mGo;
void Start()
{
this.mGo = this.gameObject;
}
void OnGUI()
{
if (GUILayout.Button("T1"))
{
float time = Time.realtimeSinceStartup;
int s = 0;
for (int i = 0; i < 100000; i++)
{
s = this.gameObject.layer;
}
Debug.Log("T1:" + (Time.realtimeSinceStartup - time));
}
if (GUILayout.Button("T2"))
{
float time = Time.realtimeSinceStartup;
int s = 0;
for (int i = 0; i < 100000; i++)
{
s = this.mGo.layer;
}
Debug.Log("T2:" + (Time.realtimeSinceStartup - time));
}
}
因此,这是一种方法,在使用方法时会增加一些开销。
首先,程序需要存储当前索引,然后跳转到方法位置,将参数堆在堆栈上并在方法中运行代码。然后,它会产生相反的效果,返回到它停止的程序
除此之外,可能还有一些额外的检查在财产
使用缓存版本意味着您正在使用直接访问的引用 这是一个糟糕的基准,不可靠。无论如何,该属性可能有副作用。请注意,您不应该在游戏中使用
OnGUI
进行开发。只有在为编辑器设计控件时才应该使用该函数。这是一个糟糕的基准测试,不可靠。无论如何,该属性可能有副作用。请注意,您不应该在游戏中使用OnGUI
进行开发。只有在为编辑器设计控件时,才应使用该函数。