public LuaFileInfo SingleGetInfo(string bundleName, string className)
    {
        string path = Application.dataPath + "/Resources/Scripts/LuaTest2.lua";

        //string luaCode = File.ReadAllText(Path.Combine(path, "LuaTest2.Lua"));
        //Script script = new Script();
        //script.DoString(luaCode);
        //this.script = script;

        string scriptData = File.ReadAllText(path);

        //DynValue table = Script.RunString(scriptData);
        script.DoString(scriptData);

        LuaFileInfo info = new LuaFileInfo();

        info.className = script.Globals.Get(className);

        DynValue newFunction = info.className.Table.Get("new");

        if (newFunction.IsNotNil())
        {
            info.classInst = script.Call(newFunction, info.className);
        }
        else
        {
            Debug.LogError(className + "new not found");
            return(null);
        }

        return(info);

        //print(LuaFileManager.Instance.script.DoFile(path));
    }
    // Update is called once per frame
    void Update()
    {
        //If we press F5, reload the script and run it.
        if (Input.GetKeyDown(KeyCode.F5))
        {
            //string path = Application.dataPath + "/Resources/Scripts/LuaTest2.lua";

            //StreamReader reader = new StreamReader(path);
            //string content = reader.ReadToEnd();

            //string scriptData = File.ReadAllText(path);
            //script.DoFile(scriptData);

            LuaFileManager.Instance.Init();

            LuaFileInfo info     = LuaFileManager.Instance.SingleGetInfo("test", "LuaTest2");
            DynValue    function = LuaFileManager.Instance.script.Globals.Get("LuaTest2").Table.Get("OnClickDoLocalMove");
            LuaFileManager.Instance.script.Call(function, info.classInst);
        }

        if (Input.GetKeyDown(KeyCode.F2))
        {
            DynValue classInst = script.Globals.Get("LuaTest2").Table.Get("new");
            DynValue function  = script.Globals.Get("LuaTes2").Table.Get("OnClickDoLocalMove");
            script.Call(function, classInst);
        }
    }
Example #3
0
    public void OnClickMoveTest()
    {
        UnityEngine.Debug.Log("2");

        LuaFileInfo info     = LuaFileManager.Instance.SingleGetInfo("test", "LuaTest2");
        DynValue    function = LuaFileManager.Instance.script.Globals.Get("LuaTest2").Table.Get("OnClickDoLocalMove");

        LuaFileManager.Instance.script.Call(function, info.classInst);
    }
    public LuaFileInfo GetInfo(string bundleName, string className)
    {
        LuaFileInfo info = null;

        dicLuaFileInfo.TryGetValue(className, out info);
        if (info == null && className != "none")
        {
            info = ActivatePromotion(bundleName, className);
        }
        return(info);
    }
Example #5
0
        /// <summary>
        /// 解析Lua文件配置列表
        /// </summary>
        /// <param name="content">配置列表内容</param>
        public void ParseLuaFilesConfig(string content)
        {
            m_LuaFileInfos.Clear();
            string[] contentLines = content.Split('\n');
            int      len          = contentLines.Length;

            for (int i = 0; i < len; i++)
            {
                if (!string.IsNullOrEmpty(contentLines[i]))
                {
                    LuaFileInfo info = Utility.Json.ToObject <LuaFileInfo>(contentLines[i]);
                    m_LuaFileInfos.Add(info);
                }
            }
        }
    LuaFileInfo CreatePromtionObject(string bundleName, string className)
    {
        if (className == "none")
        {
            return(null);
        }

        AssetBundleLoadAssetOperation request = AssetBundleManager.LoadAssetFromCachedAssetBundle(bundleName, className, typeof(TextAsset));

        if (request != null && request.IsDone())
        {
            TextAsset luaSrc = request.GetAsset <TextAsset>();
            script.DoString(luaSrc.text);
        }
        else
        {
            Debug.LogError(className + ".lua load Failed");
            return(null);
        }

        LuaFileInfo info = new LuaFileInfo();

        info.className = script.Globals.Get(className);

        DynValue newFunction = info.className.Table.Get("new");

        if (newFunction.IsNotNil())
        {
            info.classInst = script.Call(newFunction, info.className);
        }
        else
        {
            Debug.LogError(className + "new not found");
            return(null);
        }

        return(info);
    }
    // 없으면 새로 생성하고 맵에 등록후 OnActivatePromotion, OnSceneReady 함수들 실행
    public LuaFileInfo ActivatePromotion(string bundleName, string className)
    {
        if (script == null && className == "none")
        {
            Debug.Log("PromotionManager not init()!! ignore packet!");
            return(null);
        }

        LuaFileInfo info = null;

        dicLuaFileInfo.TryGetValue(className, out info);
        if (info != null)
        {
            Debug.LogError(className + " is already active!");
            return(null);
        }


        info = CreatePromtionObject(bundleName, className);
        dicLuaFileInfo[className] = info;

        return(info);
    }