赞
踩
1.最常用的功能:显示鼠标
打开Blueprints->Open Level Blueprint,打开场景蓝图
调用Show Mouse Cursor,将Get Player Controller关联到它的Target里,点击Compile,再运行就可以看到鼠标显示在场景中的。
2. 场景中的actor接收鼠标点击事件:以入无论是Unity还是WebGL的项目,要做模型的点击事件就非常麻烦,通常的做法都是要用射线检测的方式,通常屏幕发射射线,与模型产生碰撞时才确定点击事件。但是UE里就相对比较简单了:先设置Enable Click Events
接着在场景中选中要响应事件的模型,右键Add Event->OnClick
这个时候会自动在场景蓝图中显示出点击事件:
响应一下点击事件,就打个log:
运行并点击模型看到屏幕上有成功打印出log
4. 创建UI,并响应UI的点击事件:
引擎左下角选中Content右键创建一个新文件夹,用来放UI资源
接着选中UI文件夹右键创建Widget BluePrint
命名为MyMainUI
双击打开UI蓝图,左侧就是UI的各种控件,和其他平台的大同小异了。
拖放一个Button到编辑器里:
接着选中Button,在编辑器右侧添加Button的点击事件:
会自动切换UI事件蓝图页面:
这个时候还需要将UI加载到场景中显示,需要用到Create Widget方法:
返回打开场景蓝图,在启动事件Event Begin Play里添加启动时创建UI:
先添加Create Widget函数,接着再添加 Add to viewport函数。
还要将Create Widget函数里的Select Class选择要刚刚创建的MyMainUI
运行查看效果:
最后,要在场景蓝图里做逻辑处理的话,显然这种UI事件响应方式并不能满足需求,这个需要就需要用到一种类似于事件委托的方式来实现:
返回UI蓝图里,左侧添加自定义的EventDispatcer,然后在OnClick方法里添加Call命令
这里的添加方式是直接输入自定义的名字,例如我定义的是myButtonEventDispatcher,就会出来下面这些函数可引用了。
定义好后,可在场景蓝图里接收这个控件的事件委托:同样的道理,直接搜索自定义的名字,例如我定义的是mybutton,直接搜索mybutton即可出来Bind Event to My Button Event Dispatcher
这个Bind Evnet to My Button Event Dispatcher里的Target 就是从My MainUI里得到,所以从它这里给到一条引线,如下图:
并且要Event里拉出引线并搜索 add custom event,创建新的响应事件。
创建好事件响应内容,保存并编译查看结果。
结果也能响应到点击事件,因此这种方式就能更加灵活地运行在项目开发中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。