07
2019
03

Unity鎻掍欢寮鍙:浣跨敤ScriptedImporter浼樺寲Lua鏂囦欢瀵煎叆

        Lua浣滀负Unity棣栭夌殑鐑洿鏂版柟寮忥紝鐜板湪鍩烘湰涓婃垚浜嗗晢涓氭父鎴忕殑鏍囬厤锛坕OS鐨勬満鍒讹級銆傚悓鏃朵笉寰椾笉璇寸殑鏄紝浣跨敤Lua锛屽彲浠ラ伩寮澶у瀷椤圭洰涓暱鏃堕棿缂栬瘧鐨勯棶棰橈紙鍏跺疄杩欎釜闂鍦ㄦ柊鐗堟湰鐨刄nity涓凡缁忚В鍐筹級銆傝繕鏈変竴涓ソ澶勬槸锛屾湇鍔″櫒鍙互鎺ㄩ佷竴娈礚ua浠g爜鍒板鎴风锛岀浉褰撲簬鍋氬疄鏃禤atch锛岀淮鎶ら潪甯搁珮鏁堛備絾鏄張涓嶅緱涓嶆彁锛孡ua鏄竴涓潙锛屽紑鍙戞晥鐜囧拰娓告垙杩愯鎬ц兘閮戒細鍙楀埌涓瀹氱殑褰卞搷銆傛墍浠ヤ娇鐢ㄨ呬竴瀹氳鍦ㄩ傚綋鐨勭幆澧冧笅浣跨敤锛岃帿瑕佷竴姒傝屽叏銆

lua20190307

       鍥炲埌姝i锛岃繖閲屽浜庝釜浜轰範鎯紝浣跨敤tolua#(绠绉皌olua)銆倀olua鎵撳寘lua浠g爜鏃舵湁涓祦绋嬶紝鍗佸垎涓嶅弸濂姐傚畠浼氬皢.lua鏂囦欢澶嶅埗鍒皌emp鏂囦欢澶逛笅锛屽苟鏀瑰悕涓.byte鏂囦欢锛岀劧鍚庡皢杩欎簺.byte鏂囦欢鎵撳寘鎴怉ssetBundle銆備絾鏄鏋滄垜浠紑鍙戜簡寰堝鏂囦欢锛屽氨浼氬湪椤圭洰涓敓鎴愬ぇ閲忕殑鏃犵敤鐨.byte鏂囦欢銆傜┒鍏跺師鍥狅紝鏄洜涓簎nity鏃犳硶璇嗗埆.lua鏂囦欢锛屾墍浠ユ棤娉曟墦鍖呭埌Assetbundle涓

       鎵浠ユ垜浠鍋氱殑鏄熷姪ScriptedImporter甯姪Unity璇嗗埆.lua鏂囦欢銆

       ScriptedImporter鏄疷nity2017.1寮曞叆鐨勫姛鑳斤紝浣跨敤瀹冿紝鎴戜滑鍙互璁︰nity璇嗗埆寰堝瀹冩棤娉曡瘑鍒殑鏂囦欢锛屾瘮濡侲xcel(.xlsx)鏂囦欢锛岃嚜瀹氫箟鐨勪竴浜涘悗缂鐨勬枃浠躲傝銆奤nity鎻掍欢寮鍙:ScriptedImporter鍜孉ssetImporter銆

       鏍规嵁涓婃枃涓彁鍒扮殑閫犳垚tolua鐢熸垚鐨勫師鍥狅紝鎴戜滑鍙鎶.lua鏂囦欢璇嗗埆涓轰竴涓猅extAsset灏辫兘瑙e喅闂锛屽洜涓.byte鏂囦欢鏈韩灏辫Unity璇嗗埆涓篢extAsset銆傛墍浠ユ垜浠彲浠ュ啓涓涓狶uaImporter锛岀户鎵夸簬ScriptedImporter锛岃鍙栨枃浠剁殑鏂囨湰鐢熸垚涓涓猅extAsset浣滀负琚瘑鍒殑鐗╀綋鍗冲彲

LuaImporter.cs

using System.IO;
using UnityEditor;
using UnityEditor.Experimental.AssetImporters;
using UnityEngine;

[ScriptedImporter(1, "lua")]
public class LuaImporter : ScriptedImporter
{
    public override void OnImportAsset(AssetImportContext ctx)
    {
        var text = File.ReadAllText(ctx.assetPath);
        var asset = new TextAsset(text);
        ctx.AddObjectToAsset("main obj", asset);
        ctx.SetMainObject(asset);
    }
}


       灏哃uaImporter.cs鏀惧湪宸ョ▼鐨凟ditor鏂囦欢澶逛笅锛岀紪璇戝畬鎴愬悗锛岄」鐩細鑷姩閲嶆柊瀵煎叆鎵鏈夌殑.lua鏂囦欢銆傞氳繃涓嬪浘鎴戜滑鍙互鐪嬪埌鏃犳硶璇嗗埆.lua鏂囦欢鐨勬牱瀛

QQ鎴浘20190307223538

       閫氳繃LuaImporter涔嬪悗Unity灏.lua鏂囦欢璇嗗埆涓篢extAsset锛屼笉浠呭浘鏍囧彉浜嗭紝鍙充晶杩樻樉绀哄嚭浜嗕唬鐮併

QQ鎴浘20190307223705

       浣嗘槸鎴戜滑鐪婥#浠g爜鐨勬椂鍊欙紝缁嗗績鐨勫彲浠ョ湅鍒版槸杩欐牱鐨勬儏鍐

QQ鎴浘20190307223747

      閭d箞鎴戜滑鏄惁涔熻兘瀹炵幇鐨勶紝绛旀鏄偗瀹氱殑銆俇nity鎻愪緵ScriptedImporterEditor鏉ョ粯鍒惰嚜瀹氫箟Importer鐨処mport闈㈡澘灞曠幇銆

[CustomEditor(typeof(LuaImporter))]
public class LuaImporterEditor : ScriptedImporterEditor
{
    public override void OnInspectorGUI()
    {
    }
}


       鍏舵湰璐ㄨ繕鏄竴涓狤ditor锛屾墍浠ヤ篃鍙互鎸夌収鑷繁鐨勯渶姹傝嚜瀹氫箟Import闈㈡澘銆傝繖閲屼粈涔堥兘涓嶅啓锛屽氨鏄粈涔堥兘涓嶈銆傛墍浠ョ粨鏋滃涓嬪浘鎵绀

QQ鎴浘20190307223857

       OK鑷虫灏卞畬鎴愪簡.lua鐨勮瘑鍒伐浣溿

       鑷充簬鎵撳寘鐨勬柟娉曞氨寰堢畝鍗曚簡锛岀洿鎺ユ墦鍖呰繖浜.lua鏂囦欢鍗冲彲銆

       濡傛灉浣犻」鐩腑鏈夐偅浜涢渶瑕佽瘑鍒絾鏄疷nity鏃犳硶璇嗗埆鐨勬枃浠剁殑璇濓紝浣跨敤ScriptedImporter鍚с

鍙傝冩枃妗

https://docs.unity3d.com/Manual/ScriptedImporters.html

https://docs.unity3d.com/ScriptReference/Experimental.AssetImporters.ScriptedImporter.html

https://docs.unity3d.com/ScriptReference/Experimental.AssetImporters.ScriptedImporterEditor.html

tolua#寮婧愬簱

https://github.com/topameng/tolua

芦 涓婁竴绡 涓嬩竴绡 禄