コード例 #1
0
    //---------------------------------------------------------------------
    public static Transform GetObject(string categoryName)
    {
        if (!IsInitialize())
        {
            return(null);
        }

        // Find path or name
        if (m_CategoryMap.ContainsKey(categoryName))
        {
            return(m_CategoryMap[categoryName]);
        }

        // Not Path
        if (categoryName.Contains("/"))
        {
            CreateObject(categoryName);
            return(m_CategoryMap[categoryName]);
        }

        // Find any contains the name
        foreach (var category in m_CategoryMap)
        {
            if (category.Key.Contains(categoryName))
            {
                return(category.Value);
            }
        }

        // Lookup unknown node
        Transform categoryObject = m_UnknownParent.Find(categoryName);

        if (categoryObject != null)
        {
            return(categoryObject);
        }

        // Create to unknown child
        GameObject newObject = new GameObject();

        newObject.name = categoryName;
        CClientCommon.AttachChild(m_UnknownParent, newObject.transform, true);
        newObject.transform.position = Vector3.zero;
        newObject.transform.rotation = Quaternion.identity;
        CClientCommon.NormalizeTransform(newObject);

        return(newObject.transform);
    }
コード例 #2
0
    //---------------------------------------------------------------------
    public static bool Attach(Transform transform, string category, bool inheritLayer)
    {
        Transform categoryObject = GetObject(category);

        if (categoryObject == null)
        {
            return(false);
        }

        CClientCommon.SaveTransform(transform);
        CClientCommon.AttachChild(categoryObject, transform, inheritLayer);
        CClientCommon.RevertTransform(transform);
        if (Application.platform == RuntimePlatform.WindowsEditor)
        {
            UpdateCategoryCount(transform, categoryObject, category);
        }
        return(true);
    }
コード例 #3
0
    //---------------------------------------------------------------------
    private static GameObject CreateObjectImpl(string category)
    {
        string[] pathItems = category.Split('/');
        if (pathItems.Length == 0)
        {
            return(null);
        }

        GameObject categoryObject = null;
        GameObject parentObject   = null;
        string     currentPath    = "";

        for (int index = 0; index < pathItems.Length; ++index)
        {
            string itemName = pathItems[index];
            if (currentPath.Length == 0)
            {
                currentPath += itemName;
                Transform[] transforms = GameObject.FindObjectsOfType(
                    typeof(Transform)) as Transform[];
                for (int i = 0; i < transforms.Length; ++i)
                {
                    Transform child = transforms[i];
                    if (child.parent != null)
                    {
                        continue;
                    }

                    if (child.name == itemName)
                    {
                        categoryObject = child.gameObject;
                        break;
                    }
                }
            }
            else
            {
                currentPath   += "/" + itemName;
                categoryObject = GameObject.Find(currentPath);
            }

            if (categoryObject == null)
            {
                categoryObject      = new GameObject();
                categoryObject.name = itemName;

                if (parentObject != null)
                {
                    CClientCommon.AttachChild(
                        parentObject.transform,
                        categoryObject.transform, true);
                }
                else
                {
                    //categoryObject.AddComponent<ImmortalComponent>();
                    UnityEngine.Object.DontDestroyOnLoad(categoryObject);
                }
            }

            parentObject = categoryObject;
        }

        if (categoryObject != null)
        {
            m_CategoryMap.Add(category, categoryObject.transform);
        }

        return(categoryObject);
    }