标签:相关 dea textbox 文件夹 teaming 打开 def south span
转 http://blog.csdn.net/ZhangDi2017/article/details/61203505
由于lua文件会被识别为DefaultAsset,我们可以通过重写DefaultAsset的Inspector面板来实现预览,这里直接抄了一下TextAssetInspector的代码(反编译UnityEditor.dll获 得):
using UnityEngine; using UnityEditor; using System.IO; [CanEditMultipleObjects, CustomEditor(typeof(DefaultAsset))] public class LuaInspector : Editor { private GUIStyle m_TextStyle; public override void OnInspectorGUI() { if (this.m_TextStyle == null) { this.m_TextStyle = "ScriptText"; } bool enabled = GUI.enabled; GUI.enabled = true; string assetPath = AssetDatabase.GetAssetPath(target); if (assetPath.EndsWith(".lua")) { string luaFile = File.ReadAllText(assetPath); string text; if (base.targets.Length > 1) { text = Path.GetFileName(assetPath); } else { text = luaFile; if (text.Length > 7000) { text = text.Substring(0, 7000) + "...\n\n<...etc...>"; } } Rect rect = GUILayoutUtility.GetRect(new GUIContent(text), this.m_TextStyle); rect.x = 0f; rect.y -= 3f; rect.width = EditorGUIUtility.currentViewWidth + 1f; GUI.Box(rect, text, this.m_TextStyle); } GUI.enabled = enabled; } }
效果如下,超过7000字部分或被省略(见上述代码),其实这里也可以直接做成TextBox的形式,即时编辑等等......
其实读取lua文件时,我们一般直接使用相关的IO操作API,如果要实现编辑器面板上的拖拽,代码就比较丑陋,这里尝试进行了一次封装,使得拖拽支持DefaultAsset和TextAsset:
using UnityEngine; using UnityEditor; using System.IO; [System.Serializable] public class SGTextAsset { public Object textAsset; private string text = string.Empty; private TextAsset asset = null; public string Text { get { if (textAsset is DefaultAsset) { if (string.IsNullOrEmpty(text)) { text = File.ReadAllText(AssetDatabase.GetAssetPath(textAsset)); } return text; } else if (textAsset is TextAsset) { if (asset == null) { asset = textAsset as TextAsset; } return asset.text; } else { return null; } } } }
最终效果如下:
其实在真实的项目中,一般使用Assetbundle进行更新,一般将lua文件后缀改为txt来生成TextAsset对象,进而被打包成AssetBundle。某些平台不支持直接使用IO相关的API直接访问SteamingAssets(如Android),只能使用www,而www只能加载Unity原生支持的对象,这时候如果不更改lua的后缀,就无法被正确的加载了。好消息是,Unity官网上有很多开发者都在请求TextAsset支持lua文件,希望Unity尽快支持吧~
标签:相关 dea textbox 文件夹 teaming 打开 def south span
原文地址:http://www.cnblogs.com/kanekiken/p/7567775.html