首页 > 编程语言 >toLua中Lua调用C#中的类

toLua中Lua调用C#中的类

时间:2024-05-14 09:01:40浏览次数:22  
标签:UnityEngine 调用 name C# Lua Debug toLua TonyChang

toLua中Lua调用C#:

[7]Lua脚本调用C#中的class

准备工作:打算在Lua脚本中使用Debug,使用lua调用C#脚本,需要绑定LuaState和自定义添加Debug

image-20240514070352258

image-20240514070442189

---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by TonyChang.
--- DateTime: 2024/5/14 6:55
---
print("----------------------toLua中调用c#脚本-------------------------")


--调用Unity中的类
local object1 = UnityEngine.GameObject("object1")
local object2 = UnityEngine.GameObject("TonyChang")

GameObject  = UnityEngine.GameObject
local object3 = GameObject("object3")


--类中额静态对象可以使用 。 来调用

local TonyChang = GameObject.Find("TonyChang")
print(TonyChang.transform.position.x)

image-20240514072109660

调用的C#自定义脚本

Lua中调用自定义脚本

--使用Unity的Debug来打印
Debug = UnityEngine.Debug
Debug.Log("----------Hello-----------")

Vector3 = UnityEngine.Vector3
--使用 :调用成员方法
TonyChang.transform:Translate(Vector3.right)
Debug.Log(TonyChang.transform.position.x)

--调用继承了MonoBehaviour的类
TonyChang:AddComponent(typeof(TestScripts.Test))

--调用没有继承MonoBehaviour的类
local JackStu = TestScripts.Student("Jack")
JackStu:Speak()

Lua中要调用的自定义类

using UnityEngine;

namespace TestScripts
{
    public class Student
    {
        private string _name;

        public Student(string name)
        {
            _name = name;
        }

        public void Speak()
        {
            Debug.Log("my name is " + _name);
        }
    }
    public class Test : MonoBehaviour
    {
        private void Awake()
        {
           Debug.Log("Test.cs is running");
        }
    }
}

img
运行结果:
image-20240514082302000

调用自定的脚本需要在CustomSettings 新增,并生成warp 文件,才可以在lua中调用。
此处注意:在生成的Debug warp文件时候会报错产生,是因为wrap文件中使用指针,将相关的代码注释掉即可!

标签:UnityEngine,调用,name,C#,Lua,Debug,toLua,TonyChang
From: https://www.cnblogs.com/TonyCode/p/18190472

相关文章

  • CF938D Buy a Ticket
    题目链接:https://www.luogu.com.cn/problem/CF938D虚拟源点+最短路首先因为所要求的权值由往返的路费和目的地需要的票价两部分构成,所以我们先对每座城市之间的道路建边,边权直接设为输入的两倍。之后我们建立一个虚拟源点,对所有城市链接一条单向边,边权就是城市的票价,即把点权转......
  • React基于RBAC的权限控制
    简单实现基于RBAC(Role-BasedAccessControl,基于角色的访问控制)的权限控制,可以通过定义角色和权限,然后将权限分配给不同的角色来实现。用户根据其角色获得相应的权限,进而访问特定的路由、页面组件或者操作。以下是在React应用中实现RBAC的一个简单示例。这个示例包括了路由保护......
  • JDBC连接openGauss6.0和PostgreSQL16.2性能对比
    本文分享自华为云社区《JDBC连接openGauss6.0和PostgreSQL16.2性能对比》,作者:Gauss松鼠会小助手。PostgreSQLvsopenGauss01前置准备安装JDK:详细安装步骤请问度娘,输入能正常返回即已安装[root@db06~]#java-versionopenjdkversion"1.8.0_262"OpenJDKRuntimeEnvir......
  • N1CTF2018 shopping:多线程堆题中堆溢出的应用
    介绍一种在多线程堆题中利用堆溢出达成任意地址分配的手法。我们知道,一个进程的主线程的堆管理main_arena在libc中,分配的chunk在堆段中。那么子线程的arena和堆块都在哪里呢?这一大串在libc前面一点点的anon就是给子线程留的arena和堆空间。arena和tcache管理chunk在这个内存段......
  • Charles 代理https请求
    起因需要调用一个https服务,获取token,再携带token调用对应系统发送报文。在postman测试中,token可以正常获取,携带token并发送GET请求也可以正常发送请求返回数据。但是在应用程序使用中发现GET请求始终无法调用成功,response状态码405。应用使用HttpURLConnection进行请求,后续删除......
  • LeetCode 1915. Number of Wonderful Substrings
    原题链接在这里:https://leetcode.com/problems/number-of-wonderful-substrings/description/题目:A wonderful stringisastringwhere atmostone letterappearsan odd numberoftimes.Forexample, "ccjjc" and "abab" arewonderful,but "ab&......
  • how BabyFile app transfer files with Windows PC though data cable
    1.WindowsPCdownload"iTunes"App.Asfollows:2.WindowsPCconnecttheiPhone/iPadwithadatacable,andthen open"iTunes"app, findandclicktheconnecteddevice.asmarkedby①inthepicture. 2.Findand clickthe"Fi......
  • 第 1 篇 Scrum 冲刺博客
    这个作业属于哪个课程软件工程2024这个作业要求在哪里团队作业4——项目冲刺这个作业的目标完成团队任务布置,对未来七天的团队工作展开期望一、各个成员在Alpha阶段认领的任务核心成员项目角色与负责事项温惠兰统筹协调基本功能6:可修改字体属性......
  • 今天学了vue3的composition API
    代码量:60左右时间:1h搏客量:1<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><linkrel="icon"href="/favicon.ico"><metaname="viewport"content="wi......
  • PXE+Kickstart无人值守安装安装Centos7.9
    目录一、什么是PXE1、简介2、工作模式3、工作流程二、什么是Kickstart1、简介2、触发方式三、无人值守安装系统工作流程四、实验部署1、环境准备2、服务端:关闭防火墙和selinux3、添加一张仅主机的网卡4、配置仅主机的网卡4.1、修改网络连接名4.2、配IP地址4.3、重启网卡5、配置DHC......