Exemple #1
0
    static public void DoCreateInstance_Force(CLASS_SingletoneTarget pSingletonInstance)
    {
        _instance = pSingletonInstance;

        bool bIsGenearteGameObject;

        _instance.OnMakeSingleton(out bIsGenearteGameObject, out _bIsUpdateAble);
        if (bIsGenearteGameObject)
        {
            System.Type pTypeDriven = typeof(CLASS_SingletoneTarget);
            _instance.gameObject = new GameObject(pTypeDriven.GetFriendlyName());
            _instance.transform  = _instance.gameObject.transform;

            CCompoEventTrigger_OnDisable pOnDisable = _instance.gameObject.AddComponent <CCompoEventTrigger_OnDisable>();
            pOnDisable.p_Event_OnDisable += _instance.OnDisable_p_Event_OnDisable;
            SceneManager.sceneUnloaded   += _instance.OnSceneUnloaded;

            _instance.OnMakeGameObject(_instance.gameObject);
        }

        if (_bIsUpdateAble && CManagerUpdateObject.instance)
        {
            CManagerUpdateObject.instance.DoAddObject(_instance, true);
        }
    }
Exemple #2
0
    /* protected - [abstract & virtual]         */


    // ========================================================================== //

    #region Private

    private void OnPopComponent(Class_GetType pUnUsed)
    {
        CCompoEventTrigger_OnDisable pEventTrigger_AutoReturn = pUnUsed.GetComponent <CCompoEventTrigger_OnDisable>();

        if (pEventTrigger_AutoReturn != null)
        {
            pEventTrigger_AutoReturn.p_Event_OnDisable -= DoPush;
            pEventTrigger_AutoReturn.p_Event_OnDisable += DoPush;
        }
    }
Exemple #3
0
    // ========================================================================== //

    /* protected - Override & Unity API         */

    protected override Class_GetType OnCreateClass_WhenEmptyPool(Class_GetType pObjectCopyTarget, int iID)
    {
        GameObject pObjectUnUsed = Instantiate(pObjectCopyTarget.gameObject);

        pObjectUnUsed.name = string.Format("{0}_{1}", pObjectCopyTarget.name, _mapUnUsed[iID].Count + _mapUsed[iID].Count);
        pObjectUnUsed.transform.SetParent(transform);

        CCompoEventTrigger_OnDisable pEventTrigger = pObjectUnUsed.AddComponent <CCompoEventTrigger_OnDisable>();

        pEventTrigger.p_Event_OnDestroy += Event_RemovePoolObject;

        Class_GetType pComponentUnUsed = pObjectUnUsed.GetComponent <Class_GetType>();

        if (pComponentUnUsed == null)
        {
            Debug.LogError(name + " 풀링 매니져 에러 - pComponentNew == null, Origin Object : " + pObjectCopyTarget.name, pObjectCopyTarget);
        }

        return(pComponentUnUsed);
    }