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 ...
随机推荐
- Unity 单元测试(NUnit,UnityTestTools)
在软件开发中单元测试是非常重要的一个环节, =.=盘子脸去了几家公司都没有单元测试这个概念. 我们的系统虽然从代码看上是分离的, 在多数情况下都需要依赖于其他模块来运行.(单元测试部分内容教我解决这个 ...
- qt model/view 架构基础介绍之QListWidget
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import * from Py ...
- 认识Ant
Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一. ...
- 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6578352 在数字科技日新月异的今天,软件和硬 ...
- (转载)js获取JqueryString方法小结
一.<script>urlinfo=window.location.href; //获取当前页面的urllen=urlinfo.length;//获取url的长度offset=urlinf ...
- 前端--关于javascript对象
在javascript中对象是一种基本的数据类型,在数据结构上是一种散列表,可以看作是属性的无序集合,除了原始值其他一切都是对象.它可以用来表示现实世界中或者我们大脑中抽象出来的客体,这和其他面向对象 ...
- BFC,IFC,GFC,FFC的定义及功能
What's FC?一定不是KFC,FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念.它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定 ...
- struts2面试题
由于找了很久的工作都没有找的,只能四处收集那个面试题的.和看面试题的 还有那个记忆力也不是很好了的,而那些公司面试的时候总会有一个面试题的! 在这里分享给大家(那个本来是想上传文件的,但是找不到的 ...
- poj 3177
第一道双联通的题目,求加几条边让原图成一个双联通图,求出度数为1的双联通分量的个数+1/2. Low[u]为u或u的子树中能通过非父子边追溯到的最早的节点,即DFS序号最小的节点的序号 #includ ...
- AngularJs directive 'transclude' option 详解
transclude好像不是一个英语单词,有道词典里没有,百度翻译的意思是嵌入. transclude在angularjs的自定义的derective中是比较常见的一个东西,所有有必要要了解它. 我们 ...