Unity扩展 自定义事件Send组件
在写项目的时候,我创建了一个方法里面需要一个int的参数. 我记得是UIEvent Trigger 不能直接传递一个数字,最多只能传递一个GameObject属性过去(=.=那个值不想再组件上定义)
UIButton Message组件不能传递参数.
UIEvent Trigger组件 传递GameObject某个组件的属性过去
感觉这两个都不是很合适就自己写了一个SendMessage组件
如图:


组件类:
using UnityEngine;
using System.Collections; namespace PlateFace
{
/// <summary>
/// 消息Send组件
/// </summary>
public class SendMessageTo : MonoBehaviour { public enum MesType
{
@default,
@int,
@string,
@object
} public GameObject tager;
public string functionName; public MesType MessageType = MesType.@default;
public int @int;
public string @string;
public GameObject @object; void OnClick()
{
if (tager != null && functionName != "")
{
switch (MessageType)
{
case MesType.@default:
tager.SendMessage(functionName);
break;
case MesType.@int:
tager.SendMessage(functionName, @int);
break;
case MesType.@string:
tager.SendMessage(functionName, @string);
break;
case MesType.@object:
tager.SendMessage(functionName, @object);
break;
default:
break;
}
}
} }
}
InspectorIEdtor扩展
using UnityEngine;
using UnityEditor;
using System.Collections; namespace PlateFace
{ [CustomEditor(typeof(SendMessageTo))]
public class SendMessageToEditor : Editor
{
public override void OnInspectorGUI()
{
SendMessageTo item = target as SendMessageTo;
serializedObject.Update(); // 序列化更新 item.tager = EditorGUILayout.ObjectField("目标:", item.tager, typeof(GameObject)) as GameObject;
item.functionName = EditorGUILayout.TextField("方法名:", item.functionName).ToString();
EditorGUILayout.PropertyField(serializedObject.FindProperty("MessageType")); switch (item.MessageType)
{
case SendMessageTo.MesType.@default: break;
case SendMessageTo.MesType.@int:
item.@int = EditorGUILayout.IntField("参数(int)", item.@int);
break;
case SendMessageTo.MesType.@string:
item.@string = EditorGUILayout.TextField("参数(string)", item.@string).ToString();
break;
case SendMessageTo.MesType.@object:
item.@object = EditorGUILayout.ObjectField("参数(object)", item.@object, typeof(GameObject)) as GameObject;
break;
} // 更新编辑后的数据。
serializedObject.ApplyModifiedProperties();
}
}
}
三个脚本预览图:

Unity扩展 自定义事件Send组件的更多相关文章
- vue自定义事件 子组件把数据传出去
每个 Vue 实例都实现了事件接口(Events interface),即: 使用 $on(eventName) 监听事件 使用 $emit(eventName) 触发事件 1.使用v-on绑定自定义 ...
- vue第八单元(组件通信 子父,父子组件通信 自定义事件 事件修饰符 v-model props验证 )
第八单元(组件通信 子父,父子组件通信 自定义事件 事件修饰符 v-model props验证 ) #课程目标 掌握使用props让父组件给子组件传参(重点) 掌握props属性的使用以及prop验证 ...
- Unity 编辑器扩展自定义窗体
这次看见Unity还可以自定义弹出窗体,让我很好奇.于是就去网上找文章看了看. 如果想自定义窗体需要把类放入Editor文件夹下面. 代码如下: using UnityEngine; using Un ...
- 浏览器扩展系列————给MSTHML添加内置脚本对象【包括自定义事件】
原文:浏览器扩展系列----给MSTHML添加内置脚本对象[包括自定义事件] 使用场合: 在程序中使用WebBrowser或相关的控件如:axWebBrowser等.打开本地的html文件时,可以在h ...
- vue_组件间通信:自定义事件、消息发布与订阅、槽
自定义事件 只能用于 子组件 向 父组件 发送数据 可以取代函数类型的 props 在父组件: 给子组件@add-todo-event="addTodo" 在子组件: 相关方法中, ...
- vue组件-子组件向父组件传递数据-自定义事件
自定义事件 我们知道,父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,应该怎样做?那就是自定义事件!
- vue子组件的自定义事件
父子组件的信息传递无碍就是父组件给子组件传值(props和$attrs)和父组件触发子组件的事件($emit) 之前已经谈过了父组件给子组件传值了,现在来说说父组件触发子组件的自定义事件吧-- 实际上 ...
- 【vue】vue组件的自定义事件
父组件: <template> <div> <my-child abcClick="sayHello"></my-child> &l ...
- Vue基础-自定义事件的表单输入组件、自定义组件的 v-model
Vue 测试版本:Vue.js v2.5.13 学习 Vue 的自定义事件的表单输入组件,觉得文档讲的不太细致,所以这里再细化一下: 如果不用 v-model,代码应该是这样: <myinput ...
随机推荐
- hdu 4908 BestCoder Sequence
# include <stdio.h> # include <algorithm> using namespace std; int main() { int n,m,i,su ...
- [转]Laravel 4之Eloquent ORM
Laravel 4之Eloquent ORM http://dingjiannan.com/2013/laravel-eloquent/ 定义Eloquent模型 模型通常放在app/models目录 ...
- 如何排版 微信公众号「代码块」之 MarkEditor
前段时间写过一篇文章 如何排版微信公众号「代码块」,讲的是如何使用浏览器插件 Markdown Here 来排版代码块.虽然用 Markdown Here 排版出来的样式还不错,但存在一个问题,就是代 ...
- Python 线程(threading) 进程(multiprocessing)
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 关于asp:login控件和验证码的问题?(转)
1.验证码页面添加.2.将这验证码页面添加到login控件中:拖曳一Login控件,将之切换到模式下,在Html源文件中在表格中密码那行后添加: <tr> <td style= ...
- Oracle/Mysql/SqlServer函数区别
mysql日期和时间格式转换 Linux scp 使用详解 Oracle/Mysql/SqlServer函数区别 2011-07-01 12:34:36| 分类: Mysql技术 | 标签:mys ...
- iOS_ @property参数分析
@propert的相关参数 因为现在Xcode都是默认使用ARC所以现在分析主要是以ARC为主. 1.@property有哪些参数? 第一组: 内存管理特性 retain assign copy ...
- SQLSERVER和sybase的差异
sybase sqlserver *= left join =* right join
- (原)编译caffe时提示未定义的引用(undefined reference to)
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5864715.html 参考网址: https://github.com/BVLC/caffe/issu ...
- 12个非常有用的JavaScript小技巧
在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...