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)   

输出结果:

相关推荐
SkyrimCitadelValinor5 小时前
c#中让图片显示清晰
开发语言·c#
爱吃香蕉的阿豪5 小时前
SignalR 全解析:核心原理、适用场景与 Vue + .NET Core 实战
vue.js·microsoft·c#·.netcore·signalr
@蓝莓果粒茶8 小时前
LeetCode第350题_两个数组的交集II
c++·python·学习·算法·leetcode·职场和发展·c#
10 小时前
3D碰撞检测系统 基于SAT算法+Burst优化(Unity)
算法·3d·unity·c#·游戏引擎·sat
棒棒AIT11 小时前
mac 苹果电脑 Intel 芯片(Mac X86) 安卓虚拟机 Android模拟器 的救命稻草(下载安装指南)
android·游戏·macos·安卓·mac
「QT(C++)开发工程师」12 小时前
Qt C++动态库SDK在Visual Studio 2022使用(C++/C#版本)
c++·qt·c#·visual studio
Deng94520131415 小时前
24点数学游戏(穷举法求解表达式)
游戏·穷举法·递归回溯算法
用户61204149221317 小时前
C语言做的井字棋小游戏
c语言·后端·游戏
中游鱼20 小时前
如何序列化和反序列化动态 XmlElement ?
windows·microsoft·c#
唐青枫1 天前
C#.NET dapper 详解
c#·.net