Exemple #1
0
        private void InitLua(string luaFilename, bool updatedScript)
        {
            luaState    = new LuaState();
            luaStateExt = new LuaStateExt(luaState);

            LuaDLL.open_luaext(luaState.L);
            LuaDLL.lua_settop(luaState.L, 0);

            byte [] scriptSource = null;
            if (updatedScript)
            {
                scriptSource = FileUtils.GetDataFromFile(luaFilename);
            }
            else
            {
                scriptSource = FileUtils.GetDataFromStreamingAssets(luaFilename);
            }

            object ret;
            var    ok = luaStateExt.doArc4Buffer(scriptSource, luaFilename, LBootApp.LUA_KEY, out ret);

            if (!ok)
            {
                LogUtil.Error("doArc4Buffer failed! " + luaFilename);
            }
        }
Exemple #2
0
        private static void LoadConfig()
        {
            var luaBridge = LBootApp.luaBridge;

            var configSourceName = "config.lua";

            byte[] configSource = FileUtils.GetDataFromStreamingAssets(configSourceName);

            // load script if in production
            if (Application.isEditor)
            {
                luaBridge.DoBuffer(configSource, configSourceName);
                luaBridge.DoString("SCRIPT = 'debug'; MODE = 'development'; ");
                luaBridge.DoString("PLATFORM = 'editor';");
                luaBridge.DoString("SDK = 'standard';");
            }
            else
            {
                if (Debug.isDebugBuild)
                {
                    luaBridge.DoString("SCRIPT = 'compiled'; MODE = 'development'; ");
                    luaBridge.DoBuffer(configSource, configSourceName);
                }
                else
                {
                    luaBridge.DoBuffer(configSource, configSourceName);
#if UNITY_ANDROID
                    luaBridge.DoString("SCRIPT = 'compiled'; MODE = 'production'; ");
#endif
                }

                #if UNITY_ANDROID && !UNITY_EDITOR
                luaBridge.DoString("PLATFORM = 'android';");
                #elif UNITY_IPHONE && !UNITY_EDITOR
                luaBridge.DoString("PLATFORM = 'ios';");
                #elif UNITY_STANDALONE_OSX && !UNITY_EDITOR
                luaBridge.DoString("PLATFORM = 'osx';");
                #else
                luaBridge.DoString("PLATFORM = 'unknown';");
                #endif
            }
        }
Exemple #3
0
        void StartLua()
        {
            ComponentReflectionExt.Init();
            var luaBridge      = LBootApp.luaBridge;
            var runDebugScript = luaBridge.DoString("return rawget(_G, 'SCRIPT') == 'debug'");

            if (true.Equals(runDebugScript))
            {
                LogUtil.Debug("running debug scripts");
                var    fname        = "debug.lua";
                byte[] scriptSource = FileUtils.GetDataFromStreamingAssets(fname);
                luaBridge.DoBuffer(scriptSource, fname);
            }
            else
            {
                LogUtil.Debug("running compiled scripts");
                var    fname        = "cl.lc";
                byte[] scriptSource = FileUtils.GetDataFromStreamingAssets(fname);
                luaBridge.DoAesBuffer(scriptSource, fname, LBootApp.LUA_KEY, LBootApp.LUA_IV);
                luaBridge.Call("__main", new object[1] {
                    ""
                });
            }

// 4 times faster for FastGetter FastSetter than using reflection
//            var go = new GameObject("hello");
//            var t = go.transform;
//            t.position = Vector3.one;
//            var startTime = Time.realtimeSinceStartup;
//            object value = null;
//            for (var i = 0; i < 1000; i++)
//            {
//                var positionProperty = ReflectionHelper.GetProperty(t.GetType(), "position");
//                value = positionProperty.GetValue(t, null);
//            }
//            Debug.LogError("Reflection getter position=" + value.ToString());
//            var time = Time.realtimeSinceStartup;
//            Debug.LogError("reflection getter duration = " + ((time - startTime) * 1000).ToString() + "(ms)");
//
//            startTime = Time.realtimeSinceStartup;
//
//            for (var i = 0; i < 1000; i++)
//            {
//                 value = ComponentReflectionExt.FastGetter(t, "position");
//            }
//            Debug.LogError("FastGetter position=" + value.ToString());
//
//            time = Time.realtimeSinceStartup;
//            Debug.LogError("Component FastGetter duration = " + ((time - startTime) * 1000).ToString() + "(ms)");
//
//            var angle = Vector3.one * 100;
//            startTime = Time.realtimeSinceStartup;
//            for (var i = 0; i < 1000; i++)
//            {
//                var positionProperty = ReflectionHelper.GetProperty(t.GetType(), "localEulerAngles");
//                positionProperty.SetValue(t, angle, null);
//            }
//
//            time = Time.realtimeSinceStartup;
//            Debug.LogError("reflection setter localEulerAngles=" + t.localEulerAngles.ToString());
//            Debug.LogError("reflection setter duration = " + ((time - startTime) * 1000).ToString() + "(ms)");
//            t.localEulerAngles = Vector3.one;
//            angle = new Vector3(199, 199, 199);
//            startTime = Time.realtimeSinceStartup;
//            for (var i = 0; i < 1000; i++)
//            {
//                ComponentReflectionExt.FastSetter(t, "localEulerAngles", angle);
//            }
//
//            time = Time.realtimeSinceStartup;
//            Debug.LogError("FastGetter localEulerAngles=" + t.localEulerAngles.ToString());
//            Debug.LogError("Component FastSetter duration = " + ((time - startTime) * 1000).ToString() + "(ms)");
        }