Пример #1
0
 private void Awake()
 {
     //用LUA初始化GameConfigs
     LuaUtility.DoString("config.mapconfig");
     //初始化ModelCenter
     ModelCenter.Instance.Init();
 }
Пример #2
0
        public void TestFromLuaUnity()
        {
            string test_code = "return {vec3={x=1.2, y=3.45, z=6.7890}, vec2={x=1, y=2}, rota={x=1,y=2,z=3,w=4}, color={r=1,g=2,b=3,a=4}}";
            var    obj       = LuaUtility.FromLua <TestLuaUnity>(test_code);

            Assert.IsNotNull(obj);
            Assert.IsNotNull(obj.vec2);
            Assert.IsNotNull(obj.vec3);
            Assert.IsNotNull(obj.color);
            Assert.IsNotNull(obj.rota);
            AssertFloat(1.2, obj.vec3.x);
            AssertFloat(3.45, obj.vec3.y);
            AssertFloat(6.7890, obj.vec3.z);

            AssertFloat(1, obj.vec2.x);
            AssertFloat(2, obj.vec2.y);

            AssertFloat(1, obj.rota.x);
            AssertFloat(2, obj.rota.y);
            AssertFloat(3, obj.rota.z);
            AssertFloat(4, obj.rota.w);

            AssertFloat(1, obj.color.r);
            AssertFloat(2, obj.color.g);
            AssertFloat(3, obj.color.b);
            AssertFloat(4, obj.color.a);
        }
Пример #3
0
        public void TestToLuaInlay()
        {
            var data = new TestDataInlay();

            data.id                  = 1;
            data.data_int            = new TestLuaInt();
            data.data_int.i          = 2;
            data.content             = TestStr;
            data.data_base           = new TestDataBase();
            data.data_base.int_val   = 3;
            data.data_base.float_val = 4.56;
            data.data_base.str_val   = TestStr;
            data.data_base.bool_val  = false;
            var str = LuaUtility.ToLua(data);

            Assert.IsNotNull(str);
            Assert.IsTrue(str.Contains("id = 1,"));
            Assert.IsTrue(str.Contains("data_int = {"));
            Assert.IsTrue(str.Contains("i = 2,"));
            Assert.IsTrue(str.Contains("data_base = {"));
            Assert.IsTrue(str.Contains("int_val = 3,"));
            Assert.IsTrue(str.Contains("float_val = 4.56,"));
            Assert.IsTrue(str.Contains("str_val = \"" + TestStr));
            Assert.IsTrue(str.Contains("bool_val = false,"));
            Assert.IsTrue(str.Contains("content = \"" + TestStr));
        }
Пример #4
0
        public void TestFromLuaList2()
        {
            var test_list = new List <int>()
            {
                8, 6, 5, 3, 4, 2, 1, 7, 0, 9, 10
            };
            string test_code = "return {nums={";
            var    str_list  = new List <string>();

            for (int i = 0; i < test_list.Count; i++)
            {
                str_list.Add("[" + (i + 1) + "] = " + test_list[i] + ", ");
            }
            //打乱顺序
            SwitchListValue(str_list, 0, 3);
            SwitchListValue(str_list, 1, 6);
            SwitchListValue(str_list, 2, 9);
            SwitchListValue(str_list, 4, 7);
            foreach (var str in str_list)
            {
                test_code += str;
            }
            test_code += "}}";
            var obj = LuaUtility.FromLua <TestDataList>(test_code);

            Assert.IsNotNull(obj);
            Assert.IsNotNull(obj.nums);
            Assert.AreEqual(test_list.Count, obj.nums.Count);
            for (int i = 0; i < test_list.Count; i++)
            {
                Assert.AreEqual(test_list[i], obj.nums[i]);
            }
        }
        private static void Export()
        {
            SceneInfoForServer scene_info = Selection.activeTransform.GetComponent <SceneInfoForServer>();

            if (scene_info == null)
            {
                EditorUtility.DisplayDialog("Warning", "you must select a GameObject with SceneInfoForServer component", "Ok");
                return;
            }
            SceneInfoForServer export_info = new SceneInfoForServer();

            export_info.scene_id   = scene_info.scene_id;
            export_info.scene_name = scene_info.scene_name;
            DoorInfo[] door_list = Selection.activeTransform.GetComponentsInChildren <DoorInfo>();
            export_info.door_list = new List <DoorInfo>(door_list);
            BornInfo[] born_list = Selection.activeTransform.GetComponentsInChildren <BornInfo>();
            export_info.born_list = new List <BornInfo>(born_list);
            NPCInfo[] npc_list = Selection.activeTransform.GetComponentsInChildren <NPCInfo>();
            export_info.npc_list = new List <NPCInfo>(npc_list);
            MonsterInfo[] monster_list = Selection.activeTransform.GetComponentsInChildren <MonsterInfo>();
            export_info.monster_list = new List <MonsterInfo>(monster_list);
            string content = LuaUtility.ToLua(export_info);

            content = "local config = " + content;
            Debug.Log(content);
            content += "\nreturn config";
            string save_file_path = SavePath + "config_scene_" + export_info.scene_id + ".lua";

            File.WriteAllText(save_file_path, content);
            Debug.Log("save to file path : " + save_file_path);
        }
Пример #6
0
        public void TestToLuaUnity()
        {
            var data = new TestLuaUnity();

            data.vec2  = new Vector2(1, 2);
            data.vec3  = new Vector3(3, 4.5f, 6.7f);
            data.rota  = new Quaternion(9, 8, 7, 6);
            data.color = new Color(1, 2, 3, 4);
            var str = LuaUtility.ToLua(data);

            Assert.IsNotNull(str);
            Assert.IsTrue(str.Contains("vec2 = {"));
            Assert.IsTrue(str.Contains("x = 1,"));
            Assert.IsTrue(str.Contains("y = 2,"));
            Assert.IsTrue(str.Contains("vec3 = {"));
            Assert.IsTrue(str.Contains("x = 3,"));
            Assert.IsTrue(str.Contains("y = 4.5,"));
            Assert.IsTrue(str.Contains("z = 6.7,"));
            Assert.IsTrue(str.Contains("rota = {"));
            Assert.IsTrue(str.Contains("eulerAngles = {"));
            Assert.IsTrue(str.Contains("x = 359.0035,"));
            Assert.IsTrue(str.Contains("y = 105.124,"));
            Assert.IsTrue(str.Contains("z = 97.49586,"));
            Assert.IsTrue(str.Contains("color = {"));
            Assert.IsTrue(str.Contains("r = 1,"));
            Assert.IsTrue(str.Contains("g = 2,"));
            Assert.IsTrue(str.Contains("b = 3,"));
            Assert.IsTrue(str.Contains("a = 4,"));
        }
Пример #7
0
        public void TestToLuaList()
        {
            var data = new TestDataList();

            data.nums = new List <int>();
            data.nums.Add(1);
            data.nums.Add(21);
            data.nums.Add(621);
            data.nums.Add(2331);
            data.nums.Add(0);
            data.nums.Add(564);
            data.nums.Add(45643);
            var str = LuaUtility.ToLua(data);

            Assert.IsNotNull(str);
            Assert.IsTrue(str.Contains("nums = {"));
            int lastIndex = -1;

            for (int i = 0; i < data.nums.Count; i++)
            {
                var newIndex = str.IndexOf(data.nums[i] + ",");
                Assert.IsTrue(newIndex != -1);
                Assert.IsTrue(newIndex > lastIndex);
                lastIndex = newIndex;
            }
        }
Пример #8
0
        public void TestToLuaInt()
        {
            var data = new TestLuaInt();

            data.i = 1234567890;
            var str = LuaUtility.ToLua(data);

            Assert.IsNotNull(str);
            Assert.IsTrue(str.Contains("i = 1234567890,"));
        }
Пример #9
0
        public void TestFromLuaEnum()
        {
            string test_code = "return {e=1, E=3}";
            var    obj       = LuaUtility.FromLua <TestDataEnum>(test_code);

            Assert.IsNotNull(obj);
            Assert.IsNotNull(obj.e);
            Assert.AreEqual(TestEnum.Haha, obj.e);
            Assert.AreEqual(TestEnum2.D, obj.E);
        }
Пример #10
0
    // Start is called before the first frame update
    void Start()
    {
        LuaUtility.Initialize();
        var objects       = LuaUtility.luaEnv.DoString(luaScript.bytes, "luaInjection");
        var table         = objects[0] as LuaTable;
        var luaInitialize = table.Get <Action <LuaTable> >("OnInitialize");

        table.Set("go", this.gameObject);
        luaInitialize?.Invoke(table);
    }
Пример #11
0
        public void TestFromLuaDic2()
        {
            string test_code = "return {dic={[\"a\"]=1.2, [\'b\']=3.45, [\"c\"]=6.7890}}";
            var    obj       = LuaUtility.FromLua <TestDataDicStrFlt>(test_code);

            Assert.IsNotNull(obj);
            Assert.IsNotNull(obj.dic);
            AssertFloat(1.2, obj.dic["a"]);
            AssertFloat(3.45, obj.dic["b"]);
            AssertFloat(6.7890, obj.dic["c"]);
        }
Пример #12
0
        public void TestFromLuaIntExtraData()
        {
            var str = @"return {i=1, ii=3, t={}, f=1.23, b=false, tt={1,2,3, ttt={a=1}}}";

            LuaUtility.IsShowLog = true;
            var obj = LuaUtility.FromLua <TestLuaInt>(str);

            LuaUtility.IsShowLog = false;
            Assert.IsNotNull(obj);
            Assert.AreEqual(obj.i, 1);
        }
Пример #13
0
        public void TestFromLuaInlay()
        {
            string test_code = "return { id = 987, data_int = { i = 23847, }, data_base = " + TestLexStateBaseDataStr + ", content = '" + TestStr + "' }";
            var    obj       = LuaUtility.FromLua <TestDataInlay>(test_code);

            Assert.IsNotNull(obj);
            Assert.AreEqual(987, obj.id);
            Assert.AreEqual(TestStr, obj.content);
            TestDataBase(obj.data_base);
            Assert.IsNotNull(obj.data_int);
            Assert.AreEqual(23847, obj.data_int.i);
        }
Пример #14
0
        public void TestToLuaEnum()
        {
            var data = new TestDataEnum();

            data.e = TestEnum.Haha;
            data.E = TestEnum2.D;
            var str = LuaUtility.ToLua(data);

            Assert.IsNotNull(str);
            Assert.IsTrue(str.Contains("e = 1,"));
            Assert.IsTrue(str.Contains("E = 3,"));
        }
Пример #15
0
 public static void Send2Lua(int id, byte[] bytes)
 {
     try
     {
         var byteBuffer = new LuaByteBuffer(bytes);
         LuaUtility.CallLuaModuleMethod("Protol.ProtoProcess", "Process", id, byteBuffer);
     }
     catch (Exception e)
     {
         LogHelper.PrintError($"[LuaNetUtility]Send2Lua error,id:{id},info:{e}.");
     }
 }
Пример #16
0
    private void Awake()
    {
        m_Table = LuaUtility.GetNewLuaTable();
        LuaTable newTable = LuaUtility.GetNewLuaTable();

        newTable.Set <string, LuaTable>("__index", LuaUtility.Global);
        m_Table.SetMetaTable(newTable);
        newTable.Dispose();
        LuaUtility.DoString(m_FilePath, this.gameObject.name, m_Table);

        Debug.Log(0x01);
    }
Пример #17
0
        public void TestFromLuaList()
        {
            string test_code = "return {nums={0,1,2,3,4,5,6,7,8,9,10}}";
            var    obj       = LuaUtility.FromLua <TestDataList>(test_code);

            Assert.IsNotNull(obj);
            Assert.IsNotNull(obj.nums);
            Assert.AreEqual(11, obj.nums.Count);
            for (int i = 0; i < 11; i++)
            {
                Assert.AreEqual(i, obj.nums[i]);
            }
        }
Пример #18
0
        public void TestFromLuaListTable()
        {
            string test_code = "return {data={{i=1}, {i=2}, {i=3}, {i=4}, {i=5}, {i=6}, {i=7}, {i=8}, {i=9}, {i=10}, {i=11}, }, }";
            var    obj       = LuaUtility.FromLua <TestDataListTable>(test_code);

            Assert.IsNotNull(obj);
            Assert.IsNotNull(obj.data);
            Assert.AreEqual(11, obj.data.Count);
            for (int i = 0; i < 11; i++)
            {
                Assert.AreEqual(i + 1, obj.data[i].i);
            }
        }
Пример #19
0
        public void TestFromLuaComment()
        {
            var str = @"--哈哈忽略注释吧
            --[[123456
                忽略多行注释吧1

                忽略多行注释吧2
            654321--]]
            return {i=33}";
            var obj = LuaUtility.FromLua <TestLuaInt>(str);

            Assert.IsNotNull(obj);
            Assert.AreEqual(obj.i, 33);
        }
Пример #20
0
    private void Init()
    {
        m_Table = LuaUtility.GetNewLuaTable();
        LuaTable temp = LuaUtility.GetNewLuaTable();

        temp.Set <string, LuaTable>("__index", LuaUtility.Global);
        m_Table.SetMetaTable(temp);
        temp.Dispose();
        LuaUtility.DoString(m_FilePath, this.gameObject.name, m_Table);
        m_Table.Get <string, Action>("BindController", out bindController);
        m_Table.Get <string, Action>("AddListeners", out addListeners);
        m_Table.Get <string, Action>("OnPerOpen", out onPerOpen);
        m_Table.Get <string, Action>("OnAfterOpen", out onAfterOpen);
        m_Table.Get <string, Action>("OnPerClose", out onPerClose);
        m_Table.Get <string, Action>("OnAfterClose", out onAfterClose);
    }
Пример #21
0
        public void TestToLuaStaticArray()
        {
            var obj = new TestDoubleStaticArray();

            for (int i = 0; i < obj.ds.Length; i++)
            {
                obj.ds[i] = i;
            }
            var code = LuaUtility.ToLua(obj);

            Debug.LogFormat("LuaUtilityTest[604:50 TestToLuaStaticArray] code:{0}", code);
            for (int i = 0; i < obj.ds.Length; i++)
            {
                Assert.IsTrue(code.Contains(string.Format("{0},", i)));
            }
        }
Пример #22
0
        public void TestToLuaPolymorphic()
        {
            var data = new List <TestAnimal>();

            data.Add(new TestDog());
            data.Add(new TestCat());
            var str = LuaUtility.ToLua(data);

            Assert.IsNotNull(str);
            var dog_type_name = typeof(TestDog).FullName + ", " + typeof(TestDog).Assembly.GetName().Name;
            var cat_type_name = typeof(TestCat).FullName + ", " + typeof(TestCat).Assembly.GetName().Name;

            Assert.IsTrue(str.Contains(string.Format("[\"$type\"] = \"{0}\"", dog_type_name)));
            Assert.IsTrue(str.Contains(string.Format("[\"$type\"] = \"{0}\"", cat_type_name)));
            Assert.IsFalse(str.Contains("TestAnimal"));
        }
Пример #23
0
        public void TestFromLuaIntLocal()
        {
            var str = @"local t = {i=1} return t";
            var obj = LuaUtility.FromLua <TestLuaInt>(str);

            Assert.IsNotNull(obj);
            Assert.AreEqual(obj.i, 1);

            // CAT_TODO: return前的赋值语法
            LuaUtility.IsShowLog = true;
            str = @"local t = {i=1}  t['i']=1 t['i']=2 return t";
            obj = LuaUtility.FromLua <TestLuaInt>(str);
            Assert.IsNotNull(obj);
            Assert.AreEqual(obj.i, 1);
            LuaUtility.IsShowLog = false;
        }
Пример #24
0
        public void TestToLuaBase()
        {
            var data = new TestDataBase();

            data.int_val   = 1;
            data.float_val = 2.34;
            data.str_val   = TestStr;
            data.bool_val  = true;
            var str = LuaUtility.ToLua(data);

            Assert.IsNotNull(str);
            Assert.IsTrue(str.Contains("int_val = 1,"));
            Assert.IsTrue(str.Contains("float_val = 2.34,"));
            Assert.IsTrue(str.Contains("str_val = \"" + TestStr));
            Assert.IsTrue(str.Contains("bool_val = true,"));
        }
Пример #25
0
        private static void Export()
        {
            SceneInfoForServer export_info = new SceneInfoForServer();

            export_info.scene_id   = 1001;
            export_info.scene_name = "scene_name";
            export_info.door_list  = new List <DoorInfo>();
            DoorInfo door = new DoorInfo();

            door.door_id         = 1;
            door.pos_x           = 1.1f;
            door.pos_y           = 2.2f;
            door.pos_z           = 3.123456f;
            door.target_scene_id = 1002;
            door.target_x        = 11.1f;
            door.target_y        = 22.2f;
            door.target_z        = 33.123456f;
            export_info.door_list.Add(door);
            export_info.door_list.Add(door);

            export_info.npc_list = new List <NPCInfo>();
            NPCInfo npc = new NPCInfo();

            npc.npc_id = 1;
            npc.pos_x  = 1.1f;
            npc.pos_y  = 2.2f;
            npc.pos_z  = 3.123456f;
            export_info.npc_list.Add(npc);

            export_info.monster_list = new List <MonsterInfo>();
            MonsterInfo monster = new MonsterInfo();

            monster.monster_id = 1;
            monster.pos_x      = 1.1f;
            monster.pos_y      = 2.2f;
            monster.pos_z      = 3.123456f;
            export_info.monster_list.Add(monster);

            export_info.test_dic = new Dictionary <int, string>();
            export_info.test_dic.Add(1, "one");
            export_info.test_dic.Add(3, "three");
            export_info.test_dic.Add(6, "haha");

            string content = LuaUtility.ToLua(export_info);

            Debug.Log("SceneInfoExporterForServer:Export content : " + content);
        }
Пример #26
0
        public void TestFromLuaString()
        {
            var str = "return {str=\"" + TestStr + "\"}";
            var obj = LuaUtility.FromLua <TestLuaString>(str);

            Assert.IsNotNull(obj);
            Assert.AreEqual(TestStr, obj.str);

            str = @"return {str='" + TestStr + "'}";
            obj = LuaUtility.FromLua <TestLuaString>(str);
            Assert.IsNotNull(obj);
            Assert.AreEqual(TestStr, obj.str);

            var str_with_line = @"abcde\
            fghijk";

            str = "return {str=\"" + str_with_line + "\"}";
            Debug.LogFormat("LuaUtilityTest[191:04] str:{0}", str);
            obj = LuaUtility.FromLua <TestLuaString>(str);
            Assert.IsNotNull(obj);
            //注意expect_str是故意和str_with_line不一样的,因为lua会把\符号给忽略掉或者转义
            var expect_str = @"abcde
            fghijk";

            Assert.AreEqual(expect_str, obj.str);

            //CAT_TODO:加上\符号的转义测试
            // str_with_line = @"abcde\\a\\bfghijk";
            // str = "return {str=\""+str_with_line+"\"}";
            // Debug.LogFormat("LuaUtilityTest[191:04] str:{0}", str);
            // obj = LuaUtility.FromLua<TestLuaString>(str);
            // Assert.IsNotNull(obj);
            // //注意expect_str是故意和str_with_line不一样的,因为lua会把\符号给忽略掉或者转义
            // expect_str = @"abcdefghijk";
            // Assert.AreEqual(expect_str, obj.str);

            string test_str_mut = @"123456
                多行字符串1

                多行字符串2
            654321";

            str = @"return {str=[[" + test_str_mut + "]]}";
            obj = LuaUtility.FromLua <TestLuaString>(str);
            Assert.IsNotNull(obj);
            Assert.AreEqual(test_str_mut, obj.str);
        }
Пример #27
0
        public void TestFromLuaInt()
        {
            var str = @"return {i=1}";
            var obj = LuaUtility.FromLua <TestLuaInt>(str);

            Assert.IsNotNull(obj);
            Assert.AreEqual(obj.i, 1);

            str = @"return {i=-1}";
            obj = LuaUtility.FromLua <TestLuaInt>(str);
            Assert.IsNotNull(obj);
            Assert.AreEqual(obj.i, -1);

            str = @"{i=0}";
            obj = LuaUtility.FromLua <TestLuaInt>(str);
            Assert.IsNotNull(obj);
            Assert.AreEqual(obj.i, 0);
        }
Пример #28
0
        public void TestToLuaDic3()
        {
            var data = new TestDataDicIntStr();

            data.dic = new Dictionary <int, string>();
            data.dic.Add(1, "a");
            data.dic.Add(3, "c");
            data.dic.Add(111, "d");
            data.dic.Add(-1234, "e");
            data.dic.Add(0, "b");
            var str = LuaUtility.ToLua(data.dic);

            Assert.IsNotNull(str);
            Assert.IsTrue(str.Contains("[1] = \"a\","));
            Assert.IsTrue(str.Contains("[3] = \"c\","));
            Assert.IsTrue(str.Contains("[111] = \"d\","));
            Assert.IsTrue(str.Contains("[-1234] = \"e\","));
            Assert.IsTrue(str.Contains("[0] = \"b\","));
        }
Пример #29
0
        public void TestFromLuaFloat()
        {
            var str = @"return {f=1.2345}";
            var obj = LuaUtility.FromLua <TestLuaFloat>(str);

            Assert.IsNotNull(obj);
            AssertFloat(1.2345, obj.f);

            str = @"return {f=-1e+11}";
            obj = LuaUtility.FromLua <TestLuaFloat>(str);
            Assert.IsNotNull(obj);
            Assert.AreEqual(float.Parse("-1e+11"), obj.f);
            AssertFloat(float.Parse("-1e+11"), obj.f);

            str = @"return {f=.2345}";
            obj = LuaUtility.FromLua <TestLuaFloat>(str);
            Assert.IsNotNull(obj);
            AssertFloat(0.2345, obj.f);
        }
Пример #30
0
        private void DrawScriptProperty(Rect position, SerializedProperty scriptPathProperty)
        {
            TextAsset scriptAsset     = null;
            string    scriptAssetPath = string.Empty;

            if (!string.IsNullOrEmpty(scriptPathProperty.stringValue))
            {
                scriptAssetPath = LuaUtility.GetScriptAssetPath(scriptPathProperty.stringValue);
                scriptAsset     = AssetDatabase.LoadAssetAtPath <TextAsset>(scriptAssetPath);
                if (scriptAsset == null)
                {
                    scriptAsset = null;
                    scriptPathProperty.stringValue = null;
                    scriptAssetPath = string.Empty;
                }
            }

            Rect      scriptRect     = new Rect(position.x, position.y, position.width, EditorGUIUtility.singleLineHeight);
            TextAsset newScriptAsset = (TextAsset)EditorGUI.ObjectField(scriptRect, "Lua Asset", scriptAsset, typeof(TextAsset), false);

            scriptRect.y     += scriptRect.height;
            scriptRect.x     += 20;
            scriptRect.width -= 20;
            EditorGUI.BeginDisabledGroup(true);
            {
                EditorGUI.TextField(scriptRect, "Script Path", scriptAssetPath);
            }
            EditorGUI.EndDisabledGroup();

            if (newScriptAsset != scriptAsset)
            {
                if (newScriptAsset == null)
                {
                    scriptPathProperty.stringValue = null;
                }
                else
                {
                    string assetPath = AssetDatabase.GetAssetPath(newScriptAsset);
                    scriptPathProperty.stringValue = LuaUtility.GetScriptPath(assetPath);
                }
            }
        }