Unity开发日常

栏目: Lua · 发布时间: 8年前

内容简介:Unity开发日常

1、今天游戏功能那边有个需求稍微麻烦一点,原理上就是NGUI的界面要实现触摸穿透,从而达到触发两个组件的事件函数的目的。

方案:我们的 lua 脚本是通过NGUI的UIEventListener来添加事件响应函数,类似于

UIEventListener.Get(gameObject).onClick += MyClickFunction

而默认的点击响应的分发会被Box Collider的Trigger拦截,所以我在拦截的Trigger回调函数中,获取当前的UICamera,然后基于当前的点击位置发射一条射线,如果命中了Collider,则调用相应对象的OnClick函数即可。需要注意的是因为拿到的是userdata,所以不能直接调用lua函数,所以这里采用了和UICamera的Notify函数SendMessage一样的处理。

static public void Notify (GameObject go, string funcName, object obj)
{
...
go.SendMessage(funcName, obj, SendMessageOptions.DontRequireReceiver);
...
}

lua文件的调用如下:

local hit = UICamera.Raycast(Input.mousePosition)
if hit then
    obj = UICamera.lastHit.collider.gameObject
    if UIEventListener.Get(obj).onClick then
        obj:SendMessage("OnClick")
    end
end

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Software Engineering for Internet Applications

Software Engineering for Internet Applications

Eve Andersson、Philip Greenspun、Andrew Grumet / The MIT Press / 2006-03-06 / USD 35.00

After completing this self-contained course on server-based Internet applications software, students who start with only the knowledge of how to write and debug a computer program will have learned ho......一起来看看 《Software Engineering for Internet Applications》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具