总架构可集中分为以下几个模块
Main Manager
1、Level Maneger(这个框架可集中管理关卡的加载)
2、Pool Maneger(这个框架集中管理一个备用的池子,也就是说只要是我用过的一些东西就可以将它保存到这个池子中备用)
3、Save Manager(用来做Save或Load这样的操作,速度比JSon快的多。)
4、Event Manager
5、Audio Manager
6、GUI Manager
7、Game Manager
8、Menu Manager
那么Pool Maneger如何去设计呢?这里我们有两个典型的操作,一个是Spawn另一个是DeSpawn,
Spawn就是说如果现在想需要一个新的NPC的资源,我们先到这个池子里先看看有没有这个资源 ,如果有拿出来,没有就重新调用一次初始化的操作.
private List<GameObject> dormantobjects = new List<GameObject>();
public GameObject Spawn(GameObject go) {
GameObject temp = null;
if (dormantobjects.Count>0) {
foreach (GameObject dob in dormantobjects)
{
//Find an available GameObject.
if (dob.name==go.name) {
temp = dob;
dormantobjects.Remove(temp);
return temp;
}
}
}
//Now instantiate a new Gameobject.
temp = GameObject.Instantiate(go) as GameObject;
temp.name = go.name;
return temp;
}
DeSpawn呢就是说如果有一个东西首次用完了我们不立刻Destory,而放入池子中去
public void Despawn(GameObject go ) {
go.transform.parent = PoolManager.transform;
go.SetActive(false);
dormantobjects.Add(go);
Trim();
}
Trim在这两步之后呢我们还要给池子定一个大小尺寸,当池子里的东西满了,我们就Destroy第0号位置的对象,先进先出,这样我们就可以解决大部分的内存管理问题
public void Trim() {
int Capacity = 100;
while (dormantobjects.Count > Capacity) {
GameObject dob = dormantobjects[0];
dormantobjects.RemoveAt(0);
Destroy(dob);
}
}
针对Unity的一个架构---MVCS:StrangeIOC
MVVM:Uframe有编辑器界面。操作更加简单
网友评论