2019년 5월 13일 월요일

해당하는 이름이 포함되는 녀석 제거 재귀함수(fbxloader수정용)

//해당하는 이름이 포함되는 녀석 제거 재귀함수
    IEnumerator func_Trash(Transform obj)
    {
        bool flage = true;

        while (flage)
        {
            for (int i = 0; i < obj.childCount; i++)
            {
                if (obj.GetChild(i).name.Contains("$AssimpFbx$"))
                {
                    List<Transform> changeParent = new List<Transform>();

                    for (int x = 0; x < obj.GetChild(i).childCount; x++)
                    {
                        changeParent.Add(obj.GetChild(i).GetChild(x).transform);
                    }

                    foreach (Transform ttt in changeParent)
                    {
                        ttt.parent = obj;
                    }

                    Destroy(obj.GetChild(i).gameObject);
                }
                else
                {
                    StopCoroutine(trash);
                    trash = func_Trash(obj.GetChild(i));
                    StartCoroutine(trash);
                }

            }

            yield return new WaitForEndOfFrame();

            if (obj.childCount == 0)
            {
                flage = false;
            }
            else
            {
                StopCoroutine(trash);
                trash = func_Trash(obj.GetChild(0));
                StartCoroutine(trash);
            }
        }
    }











using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TriLib.Samples;
using SimpleFileBrowser;


public class LoadFBX : MonoBehaviour {


    public FileBrowser m_FileBrowser;
    public AssetLoaderWindow m_AssetLoaderWindow;
    public GameObject TEST;
   
    // Use this for initialization

    IEnumerator trash;

    void Start () {
       
    }

// Update is called once per frame
void Update () {

        if (Input.GetKeyDown("1"))
        {
            Debug.Log(" 1 ");

            trash = func_Trash(TEST.transform);           
            StartCoroutine(trash);
        }

    }

    public GameObject func_Load(string mPath)
    {
        //return m_AssetLoaderWindow.func_LoadInternal(mPath);//Path로 바로 불러오는 버전
        Debug.Log("path :"+m_FileBrowser.func_GetPath());
        return m_AssetLoaderWindow.func_LoadInternal(m_FileBrowser.func_GetPath());
    }

    public void func_Load_Button()
    {
        TEST = func_Load("sssss");
        trash = func_Trash(TEST.transform);
        StartCoroutine(trash);
    }

    //해당하는 이름이 포함되는 녀석 제거 재귀함수
    IEnumerator func_Trash(Transform obj)
    {
        bool flage = true;

        while (flage)
        {
            for (int i = 0; i < obj.childCount; i++)
            {
                if (obj.GetChild(i).name.Contains("$AssimpFbx$"))
                {
                    List<Transform> changeParent = new List<Transform>();

                    for (int x = 0; x < obj.GetChild(i).childCount; x++)
                    {
                        changeParent.Add(obj.GetChild(i).GetChild(x).transform);
                    }

                    foreach (Transform ttt in changeParent)
                    {
                        ttt.parent = obj;
                    }

                    Destroy(obj.GetChild(i).gameObject);
                }
                else
                {
                    StopCoroutine(trash);
                    trash = func_Trash(obj.GetChild(i));
                    StartCoroutine(trash);
                }

            }

            yield return new WaitForEndOfFrame();

            if (obj.childCount == 0)
            {
                flage = false;
            }
            else
            {
                StopCoroutine(trash);
                trash = func_Trash(obj.GetChild(0));
                StartCoroutine(trash);
            }
        }
    }


}

댓글 없음:

댓글 쓰기

git rejected error(feat. cherry-pick)

 문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...