xLua熱更開發之一:初見xlua,你好
本篇主要使用的是騰訊開源並且維護的xLua!地址在文末!
前言
劃重點:語言設計 根據《Lua程式設計》一書所說:在設計上,Lua語言從一開始就把簡單,高效,可嵌入,可擴充套件等作為自己的目標! 那麼對於我們的遊戲或者專案來說,熱更的模組,就代表我們可能需要嵌入到主程式中,那Lua完美的解決了我們的需求!而且使用Lua使得我們可以不用重新提包,只需要熱更資源和配置就可以修改線上的某些bug或者開啟新的活動模組!
劃重點:蘋果稽核 我們都知道蘋果稽核包一般需要幾天,而且提包過於頻繁可能會因為政策被打回! 一般情況,我們不是大更版本的話,某些小功能,我們希望使用熱更的方式來實現!比如小型的活動!而且蘋果支援使用lua熱更,放鬆了限制!
HelloWorld
從這裡開始我們的教程!學習任何語言都需要的Helloworld!
public class MyLua : MonoBehaviour
{
LuaEnv luaEnv;
private void Start()
{
luaEnv = new LuaEnv();
//使用lua列印
luaEnv.DoString("print('xLua!你好')");
luaEnv.DoString("CS.UnityEngine.Debug.Log('xLua!你好')");
}
void OnDisable()
{
luaEnv.Dispose();//關閉lua環境
}
}
列印結果:
讀取和書寫Lua程式碼
書寫lua,我們只需要新建文字文件!然後把字尾改成Lua
劃重點:文字格式 我們儲存的時候需要把格式改成UTF-8格式,不然我們讀取中文的時候會亂碼!如下圖所示:
劃重點:目錄層級 我們需要把我們書寫的Lua檔案放在指定的目錄下,並且讀取的時候需要按目錄層級去讀取!如下圖所示:
書寫Lua程式碼
print"Helloworld"
C#讀取lua程式碼
public class MyLua : MonoBehaviour
{
LuaEnv luaEnv;
private void Start()
{
luaEnv = new LuaEnv();
//使用lua列印
//luaEnv.DoString("print('xLua!你好')");
//luaEnv.DoString("CS.UnityEngine.Debug.Log('xLua!你好')");
luaEnv.DoString("require 'Lua/text'");
}
void OnDisable()
{
luaEnv.Dispose();//關閉lua環境
}
}
列印結果
c#訪問Lua屬性
Lua
name="李四"
age = 20
person =
{
name = "張三",
age = 20,
}
function Helloworld()
print("你好!")
end
function CreatGameObj()
local newObj = CS.UnityEngine.GameObject("LuaCreateGameObject");
newObj :AddComponent(typeof(CS.UnityEngine.BoxCollider));
end
C#
public class MyLua : MonoBehaviour
{
LuaEnv luaEnv;
private void Start()
{
luaEnv = new LuaEnv();
//使用lua列印
//luaEnv.DoString("print('xLua!你好')");
//luaEnv.DoString("CS.UnityEngine.Debug.Log('xLua!你好')");
luaEnv.DoString("require 'Lua/slg'");
//訪問單獨屬性
string name = luaEnv.Global.Get<string>("name");
int age = luaEnv.Global.Get<int>("age");
Debug.Log("name: " + name + " age: " + age);
//訪問類
Person person = luaEnv.Global.Get<Person>("person");
Debug.Log("name: " + person.name + " age: " + person.age);
//訪問函式
Action action = luaEnv.Global.Get<Action>("Helloworld");
action?.Invoke();
}
void OnDisable()
{
luaEnv.Dispose();//關閉lua環境
}
class Person
{
public string name;
public int age;
}
}
參考文章:
相關文章
- Unity XLua熱更新Unity
- xLua熱更新外掛
- Xlua常見API彙總API
- xlua - 增加protobuf庫
- 熱更新解決方案--xlua學習筆記筆記
- Unity匯入xLua流程Unity
- Xlua中LuaBehaviour的實現
- 【Unity】XLua巨坑彙總Unity
- xLua中C#呼叫LuaC#
- xLua中Lua呼叫C#C#
- 深入理解xLua基於IL程式碼注入的熱更新原理
- Loxodon Framework框架+XLua踩坑隨筆(一)Framework框架
- xlua中lua物件到c#物件的轉型物件C#
- 深入xLua實現原理之Lua如何呼叫C#C#
- 深入xLua實現原理之C#如何呼叫LuaC#
- Unity 小遊戲轉換(一)—— WebGL+XLua匯出Unity遊戲Web
- 再見、你好
- 再見2020,你好2021!
- 再見2020,你好2021
- 再見,2020;你好,2021!
- 初識鴻蒙OS,你好,HarmonyOS!鴻蒙
- 你好掘金,再見簡書
- 熱更
- 再見,Python!你好,Go語言PythonGo
- 再見!onActivityResult!你好,Activity Results API!API
- 再見,視覺化!你好,Pandas!視覺化
- 分發平臺如何支援熱更
- Redis 初見Redis
- go系列之一:gin+gorm開發一個簡單的熱榜介面站GoORM
- Kubernetes-三大開放介面-初見
- 更熱、更久、更頻繁的海洋熱浪正在上升
- 一個更適合Java初學者的輕量級開發工具:BlueJJava
- 初識敏捷開發敏捷
- JVM-初見JVM
- MySQL-初見MySql
- RabbitMQ-初見MQ
- ShardingSphere-初見
- 研究發現胖人比瘦人更耐熱