public static GameObject getCacheEffect(string name, ClientRunTime clientRunTime, bool visible = true) { GameObject result = null; if (!effectMap.ContainsKey(name)) { effectMap[name] = new List <GameObject>(); } List <GameObject> gameObjects = effectMap[name]; if (gameObjects.Count > 0) { int len = gameObjects.Count - 1; result = gameObjects[len]; gameObjects.RemoveAt(len); } else { result = ResFactory.getEffect(name); if (null == result) { Debug.Log("没有资源" + name); } result = ResFactory.createObject <GameObject>(result); result.AddComponent <CacheEffect>().clientRunTime = clientRunTime; result.name = name; AutoDestroy auto = result.GetComponent <AutoDestroy>(); if (auto != null) { auto.onlyDeactivate = true; } } if (visible) { result.gameObject.SetActive(true); //有些要延迟生效 就不给他visible等于true。 } return(result); }