比如有割草游戏,当玩家在场景中怪物最多的地方释放一个AOE技能,范围内的怪物全部死掉,这时候就需要把这些怪物删除 如果玩家不听的在施放技能,而怪物刷新又比较快的情况下,大约会有2种办法 第一种是写对象池,
第二种是直接销毁怪物 如果真的采用这种 加入频繁的销毁怪物的话,势必造成手机的计算压力,所以我们可以尝试不在技能施放完毕后立即销毁,而是分为几个阶段销毁,打个比方,如果玩家一个技能造成了20个怪物的死亡,而我们则不需要在玩家玩家释放完技能的这一帧中销毁怪物.而是可以尝试在第一帧中销毁1-3个,第二帧销毁1-3个一直到销毁完毕. 代码示意如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class jxyh : MonoBehaviour { public List<GameObject> list; // Start is called before the first frame update void Start() { list = new List<GameObject>(); for (int i = 0; i < 20; i++) { GameObject obj= GameObject.CreatePrimitive(PrimitiveType.Cube); obj.transform.position = new Vector3(i+0.5f, 0, i+0.5f); list.Add(obj); } StartCoroutine(DestoryEnermy(list)); } IEnumerator DestoryEnermy(List<GameObject> ts) { int listLenth = ts.Count; Debug.Log(listLenth); while (ts .Count !=0) { yield return new WaitForFixedUpdate(); Destroy( ts[listLenth-1]); list.RemoveAt(listLenth-1); listLenth--; } } }
频繁的更改字符串的优化
如果是需要频繁的修改string类型的字符串,那么对于这样的需求,我们在测试的时候发现,频繁修改string类型的字符串会消耗大量的资源,因为程序在一直执行着装箱和拆箱操作.如果换成stringBuild类型,那么将会大大减少性能消耗
StringBuilder sb =new StringBuilder("字符");
StringBuilder是可变长度的,其首先在内存中分配固定的长度,当进行频繁的插入和连接操作时,超出了内存中分配的长度会自动进行扩充,从而有效的节约了内存空间和减少了生成对象的时间。
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句