unity中Event Trigger组件应用代码
using UnityEngine;
using System.Collections;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using System.Collections.Generic;
using UnityEngine .UI ;
public class DistrictBgEvent {//门户小界面按钮功能private EventTrigger m_eventTrigger;public string pathDistrictBg;public GameObject PanelName;private bool m_state = true ;private bool m_state_2 = true;private bool m_toggleState = false ;// Use this for initialization//初始化public void StartInit(GameObject Obj,string path){if (PanelName.name == "mainPanel(Clone)" || PanelName.name == "mainControllerPanel(Clone)"){Enter(Obj, path, "Gwh", "管委会"); }else{if (pathDistrictBg == "LeftBar/districtBg/mainconbg/"){Enter(Obj, path, "Gwh", "管委会");}else{Exit(Obj, path, "Gwh", "管委会");}}Exit(Obj, path, "Gjq", "高教区");Exit(Obj, path, "Jmq", "居民区");Exit(Obj, path, "Gyq", "工业区");Exit(Obj, path, "Yfq", "研发区");Exit(Obj, path, "Syq", "商业区");m_state = true;m_state_2 = true;m_toggleState = false ;}//鼠标进入事件public void MouseInit(GameObject Obj,string path) {AddTriggersListener(Obj.transform.Find(path + "LeftBtn/Gwh").gameObject, EventTriggerType.PointerEnter, GwhEnter);AddTriggersListener(Obj.transform.Find(path + "LeftBtn/Gjq").gameObject, EventTriggerType.PointerEnter, GjqEnter);AddTriggersListener(Obj.transform.Find(path + "LeftBtn/Jmq").gameObject, EventTriggerType.PointerEnter, JmqEnter);AddTriggersListener(Obj.transform.Find(path + "LeftBtn/Gyq").gameObject, EventTriggerType.PointerEnter, GyqEnter);AddTriggersListener(Obj.transform.Find(path + "LeftBtn/Yfq").gameObject, EventTriggerType.PointerEnter, YfqEnter);AddTriggersListener(Obj.transform.Find(path + "LeftBtn/Syq").gameObject, EventTriggerType.PointerEnter, SyqEnter);if (PanelName.name == "mainPanel(Clone)" || PanelName.name == "mainControllerPanel(Clone)"){}else{AddTriggersListener(Obj.transform.FindChild("TopBarBg/districtBg").gameObject, EventTriggerType.PointerEnter, OnPointerEnter_2);AddTriggersListener(Obj.transform.FindChild("TopBarBg/districtBg").gameObject, EventTriggerType.PointerExit, OnPointerExit_2);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Gwh").gameObject, EventTriggerType.PointerEnter, OnPointerEnter);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Gwh").gameObject, EventTriggerType.PointerExit, OnPointerExit);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Gjq").gameObject, EventTriggerType.PointerEnter, OnPointerEnter);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Gjq").gameObject, EventTriggerType.PointerExit, OnPointerExit);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Jmq").gameObject, EventTriggerType.PointerEnter, OnPointerEnter);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Jmq").gameObject, EventTriggerType.PointerExit, OnPointerExit);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Gyq").gameObject, EventTriggerType.PointerEnter, OnPointerEnter);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Gyq").gameObject, EventTriggerType.PointerExit, OnPointerExit);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Yfq").gameObject, EventTriggerType.PointerEnter, OnPointerEnter);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Yfq").gameObject, EventTriggerType.PointerExit, OnPointerExit);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Syq").gameObject, EventTriggerType.PointerEnter, OnPointerEnter);AddTriggersListener(Obj.transform.FindChild(path + "RightBtn/Syq").gameObject, EventTriggerType.PointerExit, OnPointerExit);AddTriggersListener(Obj.transform.FindChild("TopBarBg/LeftPanel/LeftButtons/mainConBtn").gameObject, EventTriggerType.PointerEnter, OnPointerEnter_3);AddTriggersListener(Obj.transform.FindChild("TopBarBg/LeftPanel/LeftButtons/mainConBtn").gameObject, EventTriggerType.PointerExit, OnPointerExit_3);}}//监控系统下拉菜单点击关闭public void MouseClickUpdate(GameObject Obj,GameObject Obj_2){if (m_toggleState && Input.GetMouseButton(0) && Obj.transform.GetComponent<Toggle>().isOn && m_state && m_state_2 ){Obj.transform.FindChild("Text").GetComponent<Text>().color = new Color(50 / 255f, 50 / 255f, 50 / 255f, 1);Obj_2.SetActive(false);Obj.transform.GetComponent<Toggle>().isOn = false;}}//门户小界面按钮功能/// <summary>/// 为obj添加Eventrigger监听事件 /// </summary>/// <param name="obj">添加监听的对象</param>/// <param name="eventType">添加的监听类型</param>/// <param name="action">触发的函数</param>public void AddTriggersListener(GameObject obj, EventTriggerType eventType, UnityAction<BaseEventData> action){m_eventTrigger = obj.GetComponent<EventTrigger>();if (m_eventTrigger == null){m_eventTrigger = obj.AddComponent<EventTrigger>();}if (m_eventTrigger.triggers.Count == 0){m_eventTrigger.triggers = new List<EventTrigger.Entry>();}//定义所要绑定的事件类型 EventTrigger.Entry entry = new EventTrigger.Entry();//设置事件类型 entry.eventID = eventType;//定义回调函数 UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(action);//设置回调函数 entry.callback.AddListener(callback);//添加事件触发记录到GameObject的事件触发组件 m_eventTrigger.triggers.Add(entry);}private void Enter(GameObject obj,string path, string name_1, string name_2){obj.transform.FindChild(path + "LeftBtn/" + name_1 + "/Image").gameObject.SetActive(true);obj.transform.FindChild(path + "RightBtn/" + name_1).gameObject.SetActive(true);if (obj.name == "mainPanel(Clone)" || obj.name == "mainControllerPanel(Clone)"){obj.transform.FindChild(path + "LeftBtn/" + name_1 + "/Text").gameObject.GetComponent<Text>().color =new Color(0, 209/225f, 229/225f, 1);obj.transform.FindChild(path + "LeftBtn/" + name_1 + "/Text").gameObject.GetComponent<Text>().text = " " +name_2 +" >".ToString();}else{if (pathDistrictBg == "LeftBar/districtBg/mainconbg/"){obj.transform.FindChild(pathDistrictBg + "LeftBtn/" + name_1 + "/Text").gameObject.GetComponent<Text>().color =new Color(0, 209/225f, 229/225f, 1);obj.transform.FindChild(pathDistrictBg + "LeftBtn/" + name_1 + "/Text").gameObject.GetComponent<Text>().text =" " + name_2 + " >".ToString();}else{}}}private void Exit(GameObject obj,string path, string name_1, string name_2){obj.transform.FindChild(path + "RightBtn/" + name_1).gameObject.SetActive(false);obj.transform.FindChild(path + "LeftBtn/" + name_1 + "/Image").gameObject.SetActive(false);if (obj.name == "mainPanel(Clone)" || obj.name == "mainControllerPanel(Clone)"){obj.transform.FindChild(path + "LeftBtn/" + name_1 + "/Text").gameObject.GetComponent<Text>().text =name_2.ToString();obj.transform.FindChild(path + "LeftBtn/" + name_1 + "/Text").gameObject.GetComponent<Text>().color =Color.white;}else{if (pathDistrictBg == "LeftBar/districtBg/mainconbg/"){obj.transform.FindChild(pathDistrictBg + "LeftBtn/" + name_1 + "/Text").gameObject.GetComponent<Text>().text =name_2.ToString();obj.transform.FindChild(pathDistrictBg + "LeftBtn/" + name_1 + "/Text").gameObject.GetComponent<Text>().color =Color.white;}else{}}}private void GwhEnter(BaseEventData arg0){// Debug.Log("GwhEnter");Enter(PanelName,pathDistrictBg, "Gwh", "管委会");Exit(PanelName,pathDistrictBg, "Gjq", "高教区");Exit(PanelName,pathDistrictBg, "Jmq", "居民区");Exit(PanelName,pathDistrictBg, "Gyq", "工业区");Exit(PanelName,pathDistrictBg, "Yfq", "研发区");Exit(PanelName,pathDistrictBg, "Syq", "商业区");}private void GwhExit(BaseEventData arg0){// Debug.Log("GwhExit");}private void GjqEnter(BaseEventData arg0){// Debug.Log("GjqEnter");Enter(PanelName,pathDistrictBg, "Gjq", "高教区");Exit(PanelName,pathDistrictBg, "Gwh", "管委会");Exit(PanelName,pathDistrictBg, "Jmq", "居民区");Exit(PanelName,pathDistrictBg, "Gyq", "工业区");Exit(PanelName,pathDistrictBg, "Yfq", "研发区");Exit(PanelName,pathDistrictBg, "Syq", "商业区");}private void JmqEnter(BaseEventData arg0){// Debug.Log("JmqEnter");Enter(PanelName,pathDistrictBg, "Jmq", "居民区");Exit(PanelName,pathDistrictBg, "Gwh", "管委会");Exit(PanelName,pathDistrictBg, "Gjq", "高教区");Exit(PanelName,pathDistrictBg, "Gyq", "工业区");Exit(PanelName,pathDistrictBg, "Yfq", "研发区");Exit(PanelName,pathDistrictBg, "Syq", "商业区");}private void GyqEnter(BaseEventData arg0){// Debug.Log("GyqEnter");Enter(PanelName,pathDistrictBg, "Gyq", "工业区");Exit(PanelName,pathDistrictBg, "Gwh", "管委会");Exit(PanelName,pathDistrictBg, "Jmq", "居民区");Exit(PanelName,pathDistrictBg, "Gjq", "高教区");Exit(PanelName,pathDistrictBg, "Yfq", "研发区");Exit(PanelName,pathDistrictBg, "Syq", "商业区");}private void YfqEnter(BaseEventData arg0){// Debug.Log("YfqEnter");Enter(PanelName,pathDistrictBg, "Yfq", "研发区");Exit(PanelName,pathDistrictBg, "Gwh", "管委会");Exit(PanelName,pathDistrictBg, "Jmq", "居民区");Exit(PanelName,pathDistrictBg, "Gyq", "工业区");Exit(PanelName,pathDistrictBg, "Gjq", "高教区");Exit(PanelName,pathDistrictBg, "Syq", "商业区");}private void SyqEnter(BaseEventData arg0){// Debug.Log("SyqEnter"); Enter(PanelName,pathDistrictBg, "Syq", "商业区");Exit(PanelName,pathDistrictBg, "Gwh", "管委会");Exit(PanelName,pathDistrictBg, "Jmq", "居民区");Exit(PanelName,pathDistrictBg, "Gyq", "工业区");Exit(PanelName,pathDistrictBg, "Yfq", "研发区");Exit(PanelName,pathDistrictBg, "Gjq", "高教区");}//监控系统下拉菜单private void OnPointerEnter(BaseEventData arg0){m_state = false ;Debug.Log("m_state" + m_state);}private void OnPointerExit(BaseEventData arg0){m_state = true ;Debug.Log("m_state" + m_state);}private void OnPointerEnter_2(BaseEventData arg0){m_state_2 = false ;Debug.Log("m_state_2" + m_state_2);}private void OnPointerExit_2(BaseEventData arg0){m_state_2 = true ;Debug.Log("m_state_2" + m_state_2);}private void OnPointerEnter_3(BaseEventData arg0){m_toggleState = false ;Debug.Log("m_toggleState" + m_toggleState);}private void OnPointerExit_3(BaseEventData arg0){m_toggleState = true ;Debug.Log("m_toggleState" + m_toggleState);}
}
unity中Event Trigger组件应用代码相关推荐
- Unity中的关节组件和绳子效果的实现
前言 在Unity中可以使用Joint(关节)来实现绳子的效果. Joint属于Unity里面的一种物理组件,是模拟物体与物体之间的一种连接关系,有以下几种类型:Hinge Joint(链条连接),F ...
- 关于Unity中的transform组件(二)
在Scene视图中的蓝色网格,每一格默认是1米 一.沿着Z轴每秒移动10米 Transform cube_trans; void start(){ this.cube_trans=this.trans ...
- 【Unity】Audio Source组件——用代码动态控制音效的播放、暂停
1.代码控制播放.暂停.停止 给游戏物体添加Audio Source组件 把音频文件拖入Audio Source组件的AudioCilp中 创建一个脚本并挂载 using System.Collect ...
- Unity中通过mask组件裁剪出圆形图片,制作出圆形头像
1.首先找一张圆形图片和长方形图片 2.添加Image控件,同时将图片换成圆形图片 3.在第一个Image下再放一个Image控件,同时将图片换成长方形图片 4.最关键的一步来了,点击第一个Image ...
- Unity 之 ToLua框架中UI.Dropdown组件动态添加Options
前言 最近使用ToLua框架使用Unity中的Dropdown组件,其他属性都还好和在C#中使用的形式差不多,只是修改成了Lua的语法习惯就可以了,但是我有个需求,是要需要实现动态添加Dropdown ...
- Unity EvenTrigerer UI交互组件
Unity EvenTrigerer UI交互组件 Event Trigerer组件介绍 方便之处 事件选择 使用方法 1.拖拽法 代码添加 接口法 Event Trigerer组件介绍 该组件作用与 ...
- Event Trigger 使用方法
Event Trigger 能让对象实现与鼠标互动的一些的效果,比如按钮,拖动都可以直接实现.//还有更多作用 1.首先在需要这个功能的对象下添加 Event Trigger 组件 2.在Event ...
- Unity中的静态合批、动态合批、GPU Instance 以及SRP Batching
文章目录 Unity中的静态合批.动态合批.GPU Instance 以及SRP Batching 四种合批简介 GPU instancing static Batching Dynamic batc ...
- Unity基础笔记(1)—— Unity基本操作与基本组件介绍
Unity 基本操作与组件 一.Unity 基本操作 1. Unity 界面详解 Hierachy:层级面板,游戏场景中的资源,比如UI.模型: Scene:场景面板,用于管理游戏场景中的各种游戏物体 ...
最新文章
- 修改mysql表结构语句
- Elasticsearch 性能调优
- java web html入门书籍,JavaWeb入门到学废的第一天(HTML学习)
- 人工智能的炒作_解密人工智能:是炒作还是我们期望太高
- ActiveReports 9 新功能:借助目录(TOC)控件为报表添加目录功能
- html是以一种通用的方法来,c++ 有一种通用的方法来使函数模板适应为多态函数对象吗?...
- mysql与串口通信_虚拟机串口与主机串口通信·小程序(下)
- “3D几何与视觉技术”全球在线研讨会第六期第七期
- 如何从io.Reader 中读数据
- VPC 2007 Console界面消失以及解决方法
- 蓝桥杯 ADV-133 算法提高 彩票
- CodeIgniter的伪静态配置
- autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术
- Gnu Screen用法 【转】
- 设计模式--模板方法(Template Method)
- 如何把JSON对象转为map对象
- 【SPSS统计分析】SPSS聚类分析:一个案例演示聚类分析全过程(附SPSS 19.0中文版下载)
- 移动端项目实现手机定位
- 7-2 查询水果价格 (15 分)
- [k8s集群系列-09]Kubernetes 组件 Dashboard