其实到现在,我也基本确定了游戏的一个方向,就是做病毒传播,player躲避病毒的游戏。
接下来就处理一下病毒源这一块,我是这么想的,整个世界有4个病毒源,他们源源不断的产生各种各样的病毒。。。
(缺美术,缺美术,缺美术)真缺,自己找的资源实在不堪入目。
世界观大体上长这样。。。
现在,我先设置一下病毒源表。
id:代表4个位置
virus:代表里面有哪几种病毒,对应了一张病毒表
病毒表长这样,脑细胞有限,先设置2种病毒:
track:是否追踪player;
后面还会加一个是否繁殖。。。
因为我们后面会加载很多病毒,所以量级上可能会很大,所以引入了一个对象池的概念,下面是简单的实现:
#region 对象池
private Dictionary<int, List<GameObject>> _VirusPools = new Dictionary<int, List<GameObject>>();
private Dictionary<int, GameObject> _Prefabs = new Dictionary<int, GameObject>();
private GameObject GetPoolObj(VirusData data)
{
var id = data.Id;
GameObject result = null;
if (_VirusPools.ContainsKey(id))
{
if (_VirusPools[id].Count > 0)
{
result = _VirusPools[id][0];
result.SetActive(true);
_VirusPools[id].Remove(result);
return result;
}
}
GameObject prefab = null;
if (_Prefabs.ContainsKey(id))
{
prefab = _Prefabs[id];
}
else
{
//prefab = Resources.Load<GameObject>("Prefabs/"+objName);
prefab = GameEntry.LoaderService.Instantiate(data.Asset, _VirusSlotTrans, false);
_Prefabs.Add(id, prefab);
}
//result = UnityEngine.Object.Instantiate(prefab);
prefab.name = $"{data.Name}_{id}";
return prefab;
}
public void RecycleObj(int virusId, GameObject obj)
{
obj.SetActive(false);
if (_VirusPools.ContainsKey(virusId))
{
_VirusPools[virusId].Add(obj);
}
else
{
_VirusPools.Add(virusId, new List<GameObject>() {obj});
}
}
#endregion
先简单看看加载出来的效果
总结:今天主要梳理了病毒表及加载模块,并实现了初步的效果。后面的话实现将病毒加载到源头以及定时加载;
另外,美术资源有点丑,实在是没得办法。
传送门:独立游戏开发--索引