예제 #1
0
    /// <summary>
    /// プレハブ実体化
    /// </summary>
    /// <param name="prefab">プレハブ</param>
    /// <returns>実体化したオブジェクト</returns>
    public GameObject Instantiate(GameObject prefab)
    {
        RecycleContainer recycleContainer = GetRecycleContainer(prefab.GetComponent <RecycleImpl>());

        // コンテナが見つからなければnull返却
        if (recycleContainer == null)
        {
            return(CreateObject(prefab));
        }

        // コンテナがあれば返却
        foreach (Transform child in recycleContainer.container.transform)
        {
            // リサイクルからはずす
            child.SetParent(null);

            // アクティブ化
            child.gameObject.SetActive(true);

            // ゲームオブジェクトを返却
            return(child.gameObject);
        }

        // コンテナが定義されていても、リサイクル対象がいない場合
        return(CreateObject(prefab));
    }
예제 #2
0
    /// <summary>
    /// リサイクルコンテナクリア
    /// </summary>
    /// <param name="id">ID</param>
    public void ClearRecyleContainer(string id)
    {
        RecycleContainer recycleContainer = GetRecycleContainer(id);

        // リサイクルコンテナがなければここまで
        if (recycleContainer == null)
        {
            return;
        }

        // リサイクルコンテナクリア
        foreach (Transform child in recycleContainer.container.transform)
        {
            Destroy(child.gameObject);
        }
    }
예제 #3
0
    /// <summary>
    /// リサイクル
    /// </summary>
    /// <param name="target"></param>
    public void Recycle(GameObject target)
    {
        RecycleContainer recycleContainer = GetRecycleContainer(target.GetComponent <RecycleImpl>());

        // コンテナ未定義なら何もしない
        if (recycleContainer == null)
        {
            return;
        }

        // リサイクルカウントを超えている場合は破棄
        if (recycleContainer.container.transform.childCount >= recycleContainer.recycleCount)
        {
            Destroy(target);
            return;
        }

        // 非アクティブに変更
        target.SetActive(false);

        // コンテナに追加
        target.transform.SetParent(recycleContainer.container.transform);
    }