public void SelectObject(string targetObjName, bool zoomAction)
    {
        // 최 상위 객체는 선택할 수 없음.. 클릭시 큰 의미 없으며 큰 데이터일경우 매우 느릴 수 있음.
        if (GameObject.Find(targetObjName).transform.parent.name.Equals(CommonNames.ROOT))
        {
            return;
        }

        // 선택된 객체의 영역을 구한다.
        Bounds     myBounds  = new Bounds();
        GameObject targetObj = GameObject.Find(targetObjName);

        // 자식이 있다면 직계손들의 범위만 인정.
        if (targetObj.transform.childCount > 0)
        {
            myBounds = targetObj.transform.GetChild(0).GetComponent <MeshFilter>().mesh.bounds;

            for (int i = 1; i < targetObj.transform.childCount; i++)
            {
                myBounds.Encapsulate(targetObj.transform.GetChild(i).GetComponent <MeshFilter>().mesh.bounds);
            }
        }

        if (targetObj.transform.childCount == 0)
        {
            myBounds = targetObj.transform.GetComponent <MeshFilter>().mesh.bounds;
        }

        var frustrumLength = Math.Max(myBounds.size.y, myBounds.size.x);

        frustrumLength = Math.Max(frustrumLength, myBounds.size.z);
        var distance = frustrumLength / Mathf.Tan(Camera.main.fieldOfView * 0.5f * Mathf.Deg2Rad);

        var resultRot = new Vector3(45, 225, 0);
        var resultPos = myBounds.center - distance * (Quaternion.Euler(resultRot) * Vector3.forward);

        if (targetObj.tag.Equals("TAG_STATE"))
        {
            resultPos = targetObj.transform.position - mainFuncs.quickParser.GetUnitSize() * 5 * (Quaternion.Euler(resultRot) * Vector3.forward);
        }

        // 선택시 하이라이트.
        // 1. 기존 하이라이트 객체를 원래대로 돌린다.
        if (HighlightedObject != null)
        {
            Material materialOriginal = mainFuncs.GetMaterialByTag(HighlightedObject.tag);

            if (HighlightedObject.transform.childCount > 0)
            {
                foreach (Transform face in HighlightedObject.transform)
                {
                    face.GetComponent <Renderer>().material = materialOriginal;
                }
            }
            else
            {
                HighlightedObject.GetComponent <Renderer>().material = materialOriginal;
            }
        }

        HighlightedObject = targetObj;

        // 2. 새로운 객체를 하이라이트화 시킨다.
        if (targetObj.transform.childCount > 0)
        {
            foreach (Transform face in targetObj.transform)
            {
                face.GetComponent <Renderer>().material = materialSelected;
            }
        }
        else
        {
            targetObj.GetComponent <Renderer>().material = materialSelected;
        }


        if (zoomAction)
        {
            Camera.main.transform.DOMove(resultPos, 1);
            Camera.main.transform.DORotate(resultRot, 1);
        }
    }