优化这段代码 private void StopTimeline() { if(dLength > 0) { dLength -= Time.deltaTime; } else { List<GameObject> mHO = new List<GameObject>(); mHO.AddRange(hideObject); double DL = dLength; dLength = DL; director.enabled = false; //foreach(GameObject tohide in mHO) for (int i = 0; i < hideObject.Count; i++) { GameObject tohide = mHO[i]; if (tohide != null) { tohide.SetActive(false); } else { Debug.LogError("Hide Object-特效列表第" + i + "个元素为空值!!!"); } } } }
时间: 2023-05-20 22:01:00 浏览: 80
这段代码可以进行如下优化:
private void StopTimeline()
{
if(dLength > 0)
{
dLength -= Time.deltaTime;
}
else
{
List<GameObject> mHO = new List<GameObject>(hideObject);
dLength = 0;
director.enabled = false;
for (int i = 0; i < mHO.Count; i++)
{
GameObject tohide = mHO[i];
if (tohide != null)
{
tohide.SetActive(false);
}
else
{
Debug.LogError("Hide Object-特效列表第" + i + "个元素为空值!!!");
}
}
}
}
这里主要进行了以下几个优化:
1. 将 hideObject 列表的元素复制到 mHO 列表中,避免在遍历时对原列表进行修改。
2. 将 dLength 的值在 else 分支中直接赋为 0,避免出现精度误差。
3. 使用 for 循环代替 foreach 循环,可以提高性能。
4. 在 Debug.LogError 中使用字符串拼接,避免出现语法错误。
阅读全文