Unity导包丢失tag值、layer值
来源:互联网 发布:python service 编辑:程序博客网 时间:2024/06/05 14:26
当一个项目打包为unityPackage后,再次导入其他项目后,项目里自定义的tag和layer会丢失,下面方法,在导入unitypackage包的时候自动把它的tag或者layer写进用户的项目里。将下面的脚本,随着资源一起打包,这样当别的工程导入该项目的unitypackage包时,程序会调用AddTag和AddLayer来添加,项目中可能已经添加了tag和layer,所以在添加前先做了判断。
转自MOMO,原文地址 : http://www.xuanyusong.com/archives/3169
下面代码只添加了一个tag和一个layer,修改添加N多个tag和layer
将该脚本放在工程下即可
using System;using System.Collections;using System.Reflection;using UnityEditor;using UnityEngine;public class NewBehaviourScript : AssetPostprocessor{ private static string[] myTags = { "aaaa", "bbbb", "cccc", "dddd"}; private static string[] myLayers = { "AAAA", "BBBB", "CCCC", "DDDD"}; static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (string s in importedAssets) { if (s.Equals("Assets/NewBehaviourScript.cs")) { foreach (string tag in myTags) { AddTag(tag); } foreach (string layer in myLayers) { AddLayer(layer); } AddTag("self");<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">//增加一个叫self的tag</span> AddLayer("self");<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">//增加一个叫ruoruo的layer</span> return; } } } static void AddTag(string tag) { if (!isHasTag(tag)) { SerializedObject tagManager = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/TagManager.asset")[0]); SerializedProperty it = tagManager.GetIterator(); while (it.NextVisible(true)) { if (it.name == "tags") { for (int i = 0; i < it.arraySize; i++) { SerializedProperty dataPoint = it.GetArrayElementAtIndex(i); if (string.IsNullOrEmpty(dataPoint.stringValue)) { dataPoint.stringValue = tag; tagManager.ApplyModifiedProperties(); return; } } } } } } static void AddLayer(string layer) { if (!isHasLayer(layer)) { SerializedObject tagManager = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/TagManager.asset")[0]); SerializedProperty it = tagManager.GetIterator(); while (it.NextVisible(true)) { if (it.name.StartsWith("User Layer")) { if (it.type == "string") { if (string.IsNullOrEmpty(it.stringValue)) { it.stringValue = layer; tagManager.ApplyModifiedProperties(); return; } } } } } } static bool isHasTag(string tag) { for (int i = 0; i < UnityEditorInternal.InternalEditorUtility.tags.Length; i++) { if (UnityEditorInternal.InternalEditorUtility.tags[i].Contains(tag)) return true; } return false; } static bool isHasLayer(string layer) { for (int i = 0; i < UnityEditorInternal.InternalEditorUtility.layers.Length; i++) { if (UnityEditorInternal.InternalEditorUtility.layers[i].Contains(layer)) return true; } return false; }}
转自MOMO,原文地址 : http://www.xuanyusong.com/archives/3169
0 0
- Unity导包丢失tag值、layer值
- Unity之EditorGUILayout-Layer、Tag
- Unity 手动初始化Tag /Layer
- Unity中的layer和tag
- Unity之EditorGUILayout-Layer、Mask、Tag
- Unity 自动添加tag,SortingLayers,Layer
- Unity编程笔录--Unity3D脚本自动添加tag和Layer
- Tag,Layer跟SortingLayer
- 面向组件编程之Unity 4.怎样得到游戏场景中的对象 例如:layer/tag&&SetActive隐藏游戏物体
- Unity 动画 Tag nameHash
- Unity动态添加Tag
- unity-打tag技巧
- Unity Shader Tag
- Unity3D脚本自动添加tag和Layer
- 常用的Tag值
- iOS 关于tag值
- tag 值的用法
- tag值重复定义
- NSRunLoop概述和原理
- apache commons Math的简介和使用
- linux 应用源码(watchdog)
- 决胜大数据时代:Hadoop&Yarn&Spark企业级最佳实践(8天完整版脱产式培训版本)
- kindeditor在SSH项目中应用
- Unity导包丢失tag值、layer值
- Eclipse中project的clean功能到底有什么作用?
- iOS开发UITextField常用属性归纳:文本框样式、文字样式、键盘样式、左右视图样式、清除按钮设置等
- 基于Bluemix快速构建部署一款Java小程序——微博影响力分析器
- Coursera台大机器学习课程笔记6 -- The VC Dimension
- GPS经纬度换算成百度坐标
- 第4章 进程 I
- apache POI 的 HSSF和XSSF
- (七)门面模式