예제 #1
0
        private void AssignSortingLayerNameTo(GameObject gameObject, XElement xml, ImportBehaviour importComponent)
        {
            string sortingLayer = ImportUtils.GetAttributeAsString(xml, "sortingLayerName", "");

            if (String.IsNullOrEmpty(sortingLayer))
            {
                return;
            }

            Renderer renderer = gameObject.GetComponent <Renderer>();

            if (renderer == null)
            {
                importComponent.RecordWarning("Sorting Layer '{0}' cannot be assigned on '{1}' without a RendererComponent", sortingLayer, gameObject.name);
                return;
            }

            if (!SortingLayerExposedEditor.GetSortingLayerNames().Contains(sortingLayer))
            {
                importComponent.RecordError("Sorting Layer \"{0}\" does not exist. Check your Project Settings -> Tags and Layers", sortingLayer);
                renderer.sortingLayerName = "Default";
            }

            renderer.sortingLayerName = sortingLayer;
        }
예제 #2
0
        private GameObject CreateCopyFromMeshObj(string copyFromName, ImportBehaviour importComponent)
        {
            importComponent.RecordWarning("Deprecated import action. Re-export map '{0}' with newer version of Tiled2Unity.", importComponent.MapName);

            // Find a matching game object within the mesh object and "copy" it
            // (In Unity terms, the Instantiated object is a copy)
            string objPath = GetMeshAssetPath(importComponent.MapName, importComponent.MapName);

            UnityEngine.Object[] objects = AssetDatabase.LoadAllAssetsAtPath(objPath);

            foreach (var obj in objects)
            {
                if (obj.name != copyFromName)
                {
                    continue;
                }

                // We have a match but is it a game object?
                GameObject gameObj = GameObject.Instantiate(obj) as GameObject;

                if (gameObj == null)
                {
                    continue;
                }

                // Reset the name so it is not decorated by the Instantiate call
                gameObj.name = obj.name;
                return(gameObj);
            }

            // If we're here then there's an error with the mesh name
            importComponent.RecordError("No mesh named '{0}' to copy from.\nXml File: {1}\nObject: {2}", copyFromName, importComponent.Tiled2UnityXmlPath, objPath);
            return(null);
        }
예제 #3
0
        private void AssignSortingOrderTo(GameObject gameObject, XElement xml, ImportBehaviour importComponent)
        {
            if (xml.Attribute("sortingOrder") == null)
            {
                return;
            }

            int sortingOrder = ImportUtils.GetAttributeAsInt(xml, "sortingOrder");

            Renderer renderer = gameObject.GetComponent <Renderer>();

            if (renderer == null)
            {
                importComponent.RecordWarning("Sorting Order '{0}' cannot be assigned on '{1}' without a RendererComponent", sortingOrder, gameObject.name);
                return;
            }

            renderer.sortingOrder = sortingOrder;
        }