游戏加载卡顿这个问题严重吗?
一、背景
在游戏开发中游戏的卡顿不是某个单一的问题导致,是由诸多问题的量变在一起导致的;可能是资源层面的,也可能是逻辑层面的,也可能是网络层面的…;我这里要说的是Unity的中组件的挂载问题,当然这里的组件是指不必要的组件;
二、组件挂载问题
一个不必要的组件在GameObject上存在3种情况:
- 直接移除,没有挂载这个组建
- 挂载了这个组建,但是没有启用
- 挂起了,并启用了
如果数据到达一定的量,你就会得到下面的这张数据实践图:
这就是实际的测试数据;这里只是测试加载、实例化的问题;
三、如何解决
- 如果不是需要的组建一定要删除
- 如果组建加载的时候不直接使用,而是在特定的时刻使用,建议不需要直接启用;在需要的时候启用也可;
四、视频详细地址
五、测试代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Text;
public class ValakiCreateObjDemos : MonoBehaviour
{
[SerializeField] Text noBoxColliderText;
[SerializeField] Text noEnabledBoxColliderText;
[SerializeField] Text enableBoxColliderText;
[SerializeField] GameObject noBoxColliderItem;
[SerializeField] GameObject noEnabledBoxCollider;
[SerializeField] GameObject enabledBoxCollider;
StringBuilder noBoxColliderSB = new StringBuilder("无BoxCollider\n");
StringBuilder noEnableBoxColliderSB = new StringBuilder("不启用BoxCollider\n");
StringBuilder enabledBoxColliderSB = new StringBuilder("启用BoxCollider\n");
[SerializeField] int times;
public void OnClickCreateCubeNoBoxColliderBtn()
{
CreateCubes(noBoxColliderItem, noBoxColliderSB, noBoxColliderText);
}
public void OnClickCreateCubeNoEnableBoxColliderBtn()
{
CreateCubes(noEnabledBoxCollider, noEnableBoxColliderSB, noEnabledBoxColliderText);
}
public void OnClickCreateCubeEnabledBoxColliderBtn()
{
CreateCubes(enabledBoxCollider, enabledBoxColliderSB, enableBoxColliderText);
}
void CreateCubes(GameObject item, StringBuilder stringBuilder, Text text)
{
long startTime = GetTimeStamp();
Debug.Log(startTime);
for (int i = 1; i <= times; i++)
{
GameObject go = GameObject.Instantiate(item);
go.name = i.ToString();
if (i == times)
{
long offset = GetTimeStamp() - startTime;
stringBuilder.Append("\n耗费时间:");
stringBuilder.Append(offset);
stringBuilder.Append("ms");
stringBuilder.Append("\n");
text.text = stringBuilder.ToString();
}
}
}
public long GetTimeStamp()
{
return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000;
}
}
结语:
希望居家办公早点结束…【
valaki
】
版权声明:本文为valaki原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。