zoukankan      html  css  js  c++  java
  • tolua杂记

    1 字符串调用luaFunc  :DoString

    public class CallLuaFunction : MonoBehaviour 
    {
        private string script =
            @"  function luaFunc(num)                        
                    return num + 1
                end
    
                test = {}
                test.luaFunc = luaFunc
            ";
    
        LuaFunction luaFunc = null;
        LuaState lua = null;
        string tips = null;
        
        void Start () 
        {
            new LuaResLoader();
            lua = new LuaState();
            lua.Start();
            DelegateFactory.Init();        
            lua.DoString(script);
    
            //Get the function object
            luaFunc = lua.GetFunction("test.luaFunc");
    
            if (luaFunc != null)
            {
                int num = luaFunc.Invoke<int, int>(123456);
                Debugger.Log("generic call return: {0}", num);
    
                num = CallFunc();
                Debugger.Log("expansion call return: {0}", num);
    
                Func<int, int> Func = luaFunc.ToDelegate<Func<int, int>>();
                num = Func(123456);
                Debugger.Log("Delegate call return: {0}", num);
                
                num = lua.Invoke<int, int>("test.luaFunc", 123456, true);
                Debugger.Log("luastate call return: {0}", num);
            }
    
            lua.CheckTop();
        }
        void OnDestroy()
        {
            if (luaFunc != null)
            {
                luaFunc.Dispose();
                luaFunc = null;
            }
            lua.Dispose();
            lua = null;
        }
    
        int CallFunc()
        {        
            luaFunc.BeginPCall();                
            luaFunc.Push(123456);
            luaFunc.PCall();        
            int num = (int)luaFunc.CheckNumber();
            luaFunc.EndPCall();
            return num;  
        }
    }

    2 执行lua文件

     lua = new LuaState();                
            lua.Start();        
            //如果移动了ToLua目录,自己手动修复吧,只是例子就不做配置了
            string fullPath = Application.dataPath + "\LuaFramework/ToLua/Examples/02_ScriptsFromFile";
            lua.AddSearchPath(fullPath);   
    lua.DoFile("ScriptsFromFile.lua");     
    //lua.Require("ScriptsFromFile");    Require 只执行一次                 
    lua.Collect();
    lua.CheckTop();

  • 相关阅读:
    hdu3709(数位dp)
    2012天津E题
    2012天津C题
    hdu1754(splay)
    赤裸裸的splay平衡树
    hdu(预处理+线段树)
    uva11922(强行用rope替代spaly)
    lightoj 1370 欧拉函数
    poj3294 出现次数大于n/2 的公共子串
    poj2774 后缀数组2个字符串的最长公共子串
  • 原文地址:https://www.cnblogs.com/pengyingh/p/7324874.html
Copyright © 2011-2022 走看看