原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2018/1114/187.html
Unity项目架构设计与开发管理
				对于刚接触Unity的初学者来说还是非常有经验的开发者来说,掌握项目架构设计与开发管理是迟早要掌握的知识点,为了能够帮到大家,下面我们常州游戏开发培训-幻天网络就给大家介绍下Unity项目架构设计与开发管理的知识。
		
	1.EmptyGO
	2.SimpleGameManager
	3.ManagerofManagers
	4.MVCS(StrageloC)
	5.MVVM(uFrame)
	…….
1.EmptyGo
	
1.EmptyGo
		//MainManager
	
		EventManager
	
		//Streamline messaging between classes.
	
		AudioManager
	
		//Control audio playback from one place.
	
		GUIManager
	
		//Centralize the controls to handle clicks.etc.
	
		PoolManager
	
		//Persist prefab instances in RAM and display them as needed.
	
		LevelManager
	
		//Queue up leves and perform transitions between  them. 这里有个插件可以参考一下:Mad LeveManager
	
		GameManager
	
		//manage the core game mechanics.usually projects pecific.
	
		SaveManger
	
		//Save and load user preferences and achievements.这里有个插件可以参考一下:Save Manager
	
		MenuManger
	
		//Control all menus animations contents and behaviors.
一个中型以上的项目至少有:
		
一个中型以上的项目至少有:
			 1. Level Manager
		
			 2. Pool Manager
		
			 3. Save Manager
			
	
				 1. GameManager
			
				 2. EvemtManager
			
				 3. MenuManager
			
				 4. GUIManager
			
				 5. AudioManager
内存管理问题:a simple pool design:
				
		内存管理问题:a simple pool design:
					public GameObject Spawn(GameOjbect go)
				
					{
				
					    GameObject temp = null;
				
					    if(dormantObjects.Count > 0)
				
					    {
				
					        foreach(GameObject dob in dormantObjects)
				
					        {
				
					            if(dob.name == go.name)
				
					            {
				
					                temp = dob;
				
					                dormantObjects.Remove(temp);
				
					                return temp;
				
					            }
				
					        }
				
					    }
				
					    temp = GameObject.Instantiate(go) as GameObject;
				
					    temp.name = go.name;
				
					    return temp;
				
					}
					
			
						public void Despawn(GameObject go)
					
						{
					
						    go.transform.parent = PoolManager.transform;
					
						    go.SetActive(false);
					
						    dormantObjects.Add(go);
					
						    Trim();
					
						}
					
						public void Trim()
					
						{
					
						    while(dormantObjects.Count > Capacity)
					
						    {
					
						        GameObject dob = dormantObjects[0];
					
						        dormantObjects.RemoveAt(0);
					
						        Destroy(dob);
					
						    }
					
						}
4.StrageIOC
						
				4.StrageIOC
							IBinder.Bind<Key>().To<Value>();
						
							IBinder.Bind<key>().To<value>().ToName(name);
					上篇:上一篇:Unity3d游戏开发框架-标志量,数学管理类,时间管
下篇:下一篇:TRANSFORM_TEX详解




