Exemplo n.º 1
0
    public static void GenerateClassWraps()
    {
        if (!ToLuaMenu.beAutoGen && EditorApplication.isCompiling)
        {
            EditorUtility.DisplayDialog("警告", "请等待编辑器完成编译再执行此功能", "确定");
            return;
        }
        LuaIdeClassDoc.checkDoc();
        LuaIdeInfo.luaInfos = new List <LuaIdeInfo>();
        if (!File.Exists(CustomSettings.saveDir))
        {
            Directory.CreateDirectory(CustomSettings.saveDir);
        }
        List <ToLuaMenu.BindType> gtlist = new List <ToLuaMenu.BindType>()
        {
            CustomSettings._GT(typeof(Vector3)),
            CustomSettings._GT(typeof(Vector2)),
            CustomSettings._GT(typeof(Vector4)),
            CustomSettings._GT(typeof(Color)),
            CustomSettings._GT(typeof(Quaternion)),
            CustomSettings._GT(typeof(Ray)),
            CustomSettings._GT(typeof(Bounds)),
            CustomSettings._GT(typeof(Touch)),
            CustomSettings._GT(typeof(RaycastHit)),
            CustomSettings._GT(typeof(LayerMask)),
        };

        for (int i = 0; i < CustomSettings.customTypeList.Length; i++)
        {
            gtlist.Add(CustomSettings.customTypeList[i]);
        }


        allTypes.Clear();
        ToLuaMenu.BindType[] typeList = gtlist.ToArray();

        ToLuaMenu.BindType[] list = GenBindTypes(typeList);
        LuaIdeExport.allTypes.AddRange(baseType);

        for (int i = 0; i < list.Length; i++)
        {
            LuaIdeExport.allTypes.Add(list[i].type);
        }
        StringBuilder luasb = new StringBuilder();

        for (int i = 0; i < list.Length; i++)
        {
            LuaIdeExport.Clear();
            LuaIdeExport.className     = list[i].name;
            LuaIdeExport.type          = list[i].type;
            LuaIdeExport.isStaticClass = list[i].IsStatic;
            LuaIdeExport.baseType      = list[i].baseType;
            LuaIdeExport.wrapClassName = list[i].wrapName;
            LuaIdeExport.libClassName  = list[i].libName;
            LuaIdeExport.extendList    = list[i].extendList;
            LuaIdeExport.Generate(CustomSettings.saveDir);
            LuaIdeInfo.luaInfos.Add(LuaIdeInfo.luaInfo);
        }
        foreach (LuaIdeInfo luainfo in LuaIdeInfo.luaInfos)
        {
            if (luainfo.tableName != null)
            {
                luasb.AppendLine(luainfo.toStr());
            }
        }

        DirectoryInfo dirinfo = new DirectoryInfo(Application.dataPath);
        string        dir     = dirinfo.FullName + "/luaIde/";

        if (!Directory.Exists(dir))
        {
            Directory.CreateDirectory(dir);
        }
        string filename = dir + "uluaApi.lua";

        using (StreamWriter textWriter = new StreamWriter(filename, false, Encoding.UTF8))
        {
            textWriter.Write(luasb.ToString());
            textWriter.Flush();
            textWriter.Close();
        }
        Debug.Log("Api 创建成功," + filename);
        LuaIdeExport.allTypes.Clear();
        allTypes.Clear();
        AssetDatabase.Refresh();
    }