xlua控制物体移动和旋转的两种方法

第一种方法
lua脚本
function e()
H=CS.UnityEngine.Input.GetAxis(“Horizontal”)
V=CS.UnityEngine.Input.GetAxis(“Vertical”)
CS.UnityEngine.GameObject.Find(“Cube”).transform:Rotate(CS.UnityEngine.Vector3(0,H,0))
CS.UnityEngine.GameObject.Find(“Cube”).transform:Translate(CS.UnityEngine.Vector3(0,0,V))
end

C#脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
using System;
using System.IO;
public class One1 : MonoBehaviour
{
[LuaCallCSharp]
Action e;
internal static LuaEnv luaEnv = new LuaEnv();
private LuaTable scriptEnv;
public TextAsset luaScript;
void Start()
{
scriptEnv = luaEnv.NewTable();
luaEnv.AddLoader((ref string filename) =>
{
if (filename == “one”)
{
filename = Application.dataPath + “/” + filename + “.lua.txt”;
return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(filename));
}
return null;
});
luaEnv.DoString(“require’one’”);
LuaTable meta = luaEnv.NewTable();
meta.Set("__index", luaEnv.Global);
scriptEnv.SetMetaTable(meta);
meta.Dispose();
}
void Update()
{
e();
}
}

第二种方法
lua脚本

function e()
H=CS.UnityEngine.Input.GetAxis(“Horizontal”)
V=CS.UnityEngine.Input.GetAxis(“Vertical”)
self.transform:Rotate(CS.UnityEngine.Vector3(0,H,0))
self.transform:Translate(CS.UnityEngine.Vector3(0,0,V))
end

C#脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
using System;
using System.IO;
public class One1 : MonoBehaviour
{
[LuaCallCSharp]
Action e;
internal static LuaEnv luaEnv = new LuaEnv();
private LuaTable scriptEnv;
public TextAsset luaScript;
void Start()
{
scriptEnv = luaEnv.NewTable();
LuaTable meta = luaEnv.NewTable();
meta.Set("__index", luaEnv.Global);
scriptEnv.SetMetaTable(meta);
meta.Dispose();
scriptEnv.Set(“self”, this );
luaEnv.DoString(luaScript.text, “one”, scriptEnv);
scriptEnv.Get(“e”, out e);
void Update()
{
e();
}

Lua 中,垃圾收集(Garbage Collection, GC)是一个自动内存管理机制,用于释放不再使用的内存。Lua 的默认 GC 会跟踪值类型的引用,当没有其他变量引用某个对象时,该对象会被回收。 LuaJIT 和 Xlua 这两个库对 Lua 的 GC 特性提供了不同的优化和扩展: 1. LuaJIT:它是 Lua 的一个高性能版本,其 GC 实现更为高效。LuaJIT 使用了一个增量式 GC,这意味着它可以边执行代码边回收内存,而且它的“轻量级”线程模型也减少了 GC 对性能的影响。LuaJIT 另外还支持一种名为“惰性 GC”的模式,可以在脚本执行期间推迟垃圾收集直到必要时才进行。 2. Xlua:这是一个基于 LuaJIT 的扩展库,它提供了一种更高级别的接口来简化 C/C++ 与 Lua 的交互。Xlua 在一定程度上可以帮助管理和优化内存分配,比如它可能会有自己的内存池或者缓存策略来减少 GC 的频率。同时,Xlua 也可能提供了额外的功能来更好地控制 GC 的行为,比如显式的对象标记或资源清理。 关于如何使用这些库来处理值类型 GC 或内存管理,通常的做法包括: - 在需要时手动释放 Xlua 提供的内存资源。 - 使用 Xlua 的 API 标记特定对象为不被 GC 回收,或者在适当的时间触发 GC。 - 如果 LuaJIT 被选为底层引擎,可能需要了解它的 GC 设置,并调整以适应特定应用的需求,例如设置延迟 GC。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值