zoukankan      html  css  js  c++  java
  • 【第二篇】xLua中lua加载方式

     xLua中lua文件加载方式

    1. 直接执行字符串方式

    1 LuaEnv luaenv = new LuaEnv();
    2 luaenv.DoString("CS.UnityEngine.Debug.Log('hello world')");
    3 luaenv.Dispose();

    2. 通过require加载lua文件方式,require加载的文件路径包括Resources和内置的一些路径。在Resources下存放一个HelloWorld.lua.txt文件

    1 LuaEnv luaenv = new LuaEnv();
    2 luaenv.DoString("require 'HelloWorld'");
    3 luaenv.Dispose();

    3. 自定义loader加载 

     

     1 using System.Collections;
     2 using System.Collections.Generic;
     3 using System.IO;
     4 using System.Net;
     5 using UnityEngine;
     6 using XLua;
     7 
     8 public class MyLuaTest : MonoBehaviour
     9 {
    10     private LuaEnv _luaEnv = null;
    11     // Start is called before the first frame update
    12     void Start()
    13     {
    14         _luaEnv = new LuaEnv();
    15         _luaEnv.AddLoader(CustomMyLoader);
    16         _luaEnv.DoString("require 'CustomDIRLuaFile'");
    17     }
    18 
    19     private static byte[] CustomMyLoader(ref string fileName)
    20     {
    21         byte[] byArrayReturn = null;
    22         
    23         // 定义lua路径
    24         string luaPath = Application.dataPath + "/Scripts/LuaScripts/" + fileName + ".lua";
    25         // 读取lua路径中指定lua文件内容
    26         string strLuaContent = File.ReadAllText(luaPath);
    27         // 数据类型转换
    28         byArrayReturn = System.Text.Encoding.UTF8.GetBytes(strLuaContent);
    29     
    30         return byArrayReturn;
    31     }
    32     
    33     void OnDestroy()
    34     {
    35         _luaEnv.Dispose();
    36     }
    37 }

    注释:

      通过AddLoader可以注册回调,该回调参数是字符串,lua代码里调用require是,参数将会自动传给回调,回调中就可以根据这个参数去加载指定文件

    不同加载方式分析:

    1. 直接使用DoString方式加载字符串,开发调试时可以使用
    2. 使用require方式加载,lua文件后缀需为txt,文件必须放在Resources目录下,否则无法加载到文件
    3. 自定义loader则可以把lua文件放在任意合法文件夹下,且文件后缀不用增加txt标识
  • 相关阅读:
    iis7 下配置 ASP.NET MVC 项目遇到的问题 (WIN7 64位 旗舰版 第一次配置站点)
    C# .NET 使用 NPOI 读取 .xlsx 格式 Excel
    C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
    SQL和T-SQL之间的区别
    .net core的服务器模式和工作站模式
    Windows Mysql8 设置大小写敏感
    每个国家对应的语言Locale和国家代码对照表(转)
    IL指令集
    使用 nvm 管理不同版本的 node 与 npm
    SSIS 包部署 Package Store 后,在 IS 中可以执行,AGENT 执行却报错
  • 原文地址:https://www.cnblogs.com/ogaligong/p/12357081.html
Copyright © 2011-2022 走看看