Ejemplo n.º 1
0
    public virtual void Destroy()
    {
        if (luaState != null)
        {
#if UNITY_5_4
            SceneManager.sceneLoaded -= OnSceneLoaded;
#endif
            LuaState state = luaState;
            luaState = null;

            if (levelLoaded != null)
            {
                levelLoaded.Dispose();
                levelLoaded = null;
            }

            if (loop != null)
            {
                loop.Destroy();
                loop = null;
            }

            state.Dispose();
            Instance = null;
        }
    }
Ejemplo n.º 2
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        serializedObject.Update();

        LuaBehaviour behaviour = (target as LuaBehaviour);

        if (GUILayout.Button("GetArgs"))
        {
            reflectDict.Clear();
            keyDic.Clear();

            LuaState luaState = new LuaState();
            luaState.Start();

            luaState.OpenLibs(LuaDLL.luaopen_pb);
            luaState.OpenLibs(LuaDLL.luaopen_struct);
            luaState.OpenLibs(LuaDLL.luaopen_lpeg);

            luaState.LuaGetField(LuaIndexes.LUA_REGISTRYINDEX, "_LOADED");
            luaState.OpenLibs(LuaDLL.luaopen_cjson);
            luaState.LuaSetField(-2, "cjson");

            luaState.OpenLibs(LuaDLL.luaopen_cjson_safe);
            luaState.LuaSetField(-2, "cjson.safe");

            LuaBinder.Bind(luaState);
            LuaSupport.AddSearchPath(luaState);
            luaState.Require("Define");

            luaState.DoFile(behaviour.luaFileName);

            string ctorName = behaviour.luaFileName + ".create";

            LuaFunction luaClassCreate = luaState.GetFunction(ctorName);
            LuaTable    luaClass       = luaClassCreate.Call(behaviour.gameObject)[0] as LuaTable;
            LuaTable    luaClassArgs   = luaClass["initParamNames"] as LuaTable;

            for (int i = 1; i <= luaClassArgs.Length; i++)
            {
                Debug.Log("show args:" + i + ",args:" + luaClassArgs[i]);
                string             fullArgs = Convert.ToString(luaClassArgs[i]);
                string[]           typeArr  = fullArgs.Split(new char[] { '=' });
                string             typeName = typeArr[0];
                string             t        = typeArr[1];
                UnityEngine.Object obj      = default(UnityEngine.Object);

                if (!reflectDict.ContainsKey(typeName))
                {
                    reflectDict.Add(typeName, obj);
                    keyDic.Add(typeName, t);
                }
            }
            luaState.Dispose();
        }
        Save();
        Load();
        Draw();
    }
Ejemplo n.º 3
0
    protected void Awake()
    {
        Instance = this;
        Init();

#if UNITY_5_4
        SceneManager.sceneLoaded += OnSceneLoaded;
#endif
    }