当前位置: 首页 > article >正文

xLua_003 Lua访问C#

1、new C# 对象(创建游戏物体)

LuaCallCSharp.cs

using UnityEngine;
using XLua;

public class LuaCallCSharp : MonoBehaviour
{
    public LuaEnv env = null;
    void Start()
    {
        LuaEnv env = new LuaEnv();
        env.DoString("require'LuaCallCSharp'");

    }
    private void OnDisable()
    {
        if(env != null)
        {
            env.Dispose();
            env = null;
        }
    }
}

LuaCallCSharp.lua.txt

CS.UnityEngine.GameObject()

运行结果:在unity中创建一个游戏对象,如果添加参数

例:CS.UnityEngine.GameObject("new by lua")

注意:

  • lua里头没有new关键字;
  • 所有C#相关的都放到CS下,包括构造函数,静态成员属性、方法;

2、访问C#静态属性的方法

LuaCallCSharp.lua.txt

print(CS.UnityEngine.Time.deltaTime)

CS.UnityEngine.Time.timeScale=0.5

--如果其他不对camera进行访问 用local为局部变量
local camera = CS.UnityEngine.GameObject.Find("Main Camera")
camera.name="updata by lua"

 运行结果:

节约性能方法:(对于经常访问的类)

先引用局部变量再引用

LuaCallCSharp.lua.txt

local gameobject = CS.UnityEngine.GameObject

local camera = gameobject.Find("Main Camera")
camera.name="updata by lua"

local light = gameobject.Find("Directional Light")
light.name="updata by lua_1"

运行结果: 

3、访问C#成员属性的方法

调用成员属性时,使用  : 进行调用

LuaCallCSharp.lua.txt

local gameobject = CS.UnityEngine.GameObject
local camera = gameobject.Find("Main Camera")
--使用 : 直接将自身camera传入作为第一个参数
--相当于  local cameracom = camera.GetComponent(camera,"Camera") 
local cameracom = camera:GetComponent("Camera")
gameobject.Destroy(cameracom)   

输出结果:


http://www.kler.cn/a/599403.html

相关文章:

  • 【前端】 el-form-item的label由于字数多自行换行调整
  • LeetCode hot 100 每日一题(15)——48.旋转图像
  • 分布式环境下的重复请求防护:非Redis锁替代方案全解析
  • 数据不外传!通过内网穿透实现绿联NAS远程访问的安全配置方案
  • iPaaS集成平台:企业数字化转型的加速器
  • VUE2导出el-table数据为excel并且按字段分多个sheet
  • 大模型技术在商品归一和商品预测中的应用
  • Shiro框架漏洞攻略
  • AI 时代,我们需要什么样的数据库?
  • 【全队项目】智能学术海报生成系统PosterGenius(项目介绍)
  • Resource usage
  • Linux系统还可以在做一层虚拟化安装虚拟机吗
  • Web3与网络安全:如何确保去中心化应用的安全性
  • 使用 ChatGPT 套结构仿写解决写作难题
  • Leetcode刷题笔记1 图论part03
  • 【操作系统安全】任务3:Linux 网络安全实战命令手册
  • 【C语言】多进程/多线程
  • python的文件上传
  • 4、操作系统结构和发展史
  • Ubuntu给appimage创建图标启动