xLua_003 Lua访问C#

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

LuaCallCSharp.cs

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

Lua 复制代码
CS.UnityEngine.GameObject()

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

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

注意:

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

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

LuaCallCSharp.lua.txt

Lua 复制代码
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

Lua 复制代码
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

Lua 复制代码
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)   

输出结果:

相关推荐
半亩码田11 分钟前
C#转Python第4.8篇:正则表达式:Python re 模块 vs C# System.Text.RegularExpressions
python·正则表达式·c#
FPGA小徐38 分钟前
【一生一芯 / PA】异常响应机制:RISC-V 中 ecall → mtvec → mret 的完整代
开发语言·数据库·c#
淡海水1 小时前
02-04-原理篇-GC Roots与对象图遍历
算法·unity·c#·图·gc·遍历·roots
胖纸不争6 小时前
嫌桌面 Agent 太重,我“自己”写了一个
ai·c#·net core
Martina_03217 小时前
AI生成3D模型导入后只剩一个大网格?用6步完成微缩场景拆分与优化
人工智能·游戏·数学建模·3d·ai·自然语言处理·aigc
当青春邂逅吉米多维奇10 小时前
C#图解教程(第5版) 同步方法
开发语言·c#
波力海苔夹心脆67510 小时前
C# 机器视觉实战:单相机引导机械手精准贴合,从拍照、偏差计算(平移+旋转)到坐标补偿全解
开发语言·经验分享·数码相机·c#·视觉检测·.net
Pniubi10 小时前
力扣55跳跃游戏(贪心)
算法·leetcode·游戏
棉猴10 小时前
玩游戏学Python4-字符串
python·游戏·字符串·pygame·玩游戏
释厄62311 小时前
智能体释放度子集律——文本 ⊂ 音频 ⊂ 视频⊂ 游戏
开发语言·游戏·microsoft·音视频