ulua里如何将C#创建的UnityEngine对象返回给lua

书接上回吧,还是以上一篇的作为例子。上一篇

1.lua代码

function TestStatic()
	--由生成的wrap文件调用
	MyHelloWorld.Init()

	--由生成的闭包去调用,本文用到的方式
	local go = UnityEngine.GameObject.New("LuaObj")
	local obj = LuaNTools.AddChild( go, "test")
	if obj ~= nil then
		obj:SetActive(false)
	end
end
这段代码中,我们通过LuaNTools调用了C#的AddChild方法,然后返回一个UserData对象,这个对象是一个GameObject,所以我们操作GameObject不可见。那么怎么传回来这个GameObject呢

2.C#代码

 public static int AddChild( IntPtr l )
    {
        GameObject parent = ToLua.ToVarObject( l, 1 ) as GameObject;
        if( parent == null )
        {
            Debug.Log( "parent is null" );
            return 0;
        }
        string path = ToLua.ToString( l, 2 );
        GameObject child = new GameObject( "child" );
        if( child == null )
        {
            Debug.Log( "child is null" );
            return 0;
        }
        child = NGUITools.AddChildNotLoseScale( parent, child );
        child.transform.localScale = Vector3.one;
        child.transform.localPosition = new Vector3( 10f, 10f, 0f );
        //此处把创建的对象表返回给lua
        ToLua.Push( l, child );
        return 1;
    }
从ToLua.Push,我们就把创建的GameObject传给了lua,注意,对child的设置,localScale和localPosition

3.效果

    

其实,任何类型都可以返回,注意ToLua的接口,返回时对对象的操作注意调用方式是点还是冒号操作符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值