示例#1
0
    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);
    }