Unity SetActive Event
网上查了一下Unity的SetActive变化事件没有找到,我想到用另一种思路来实现这个事件通知,它可用来调试是何处把某个gameobject隐藏掉了
Unity提供了这两个函数,OnEnable,OnDisable,当SetActive时会调用这两个函数,所在这两个函数中发出事件就可以实现想要的效果。
用法:新建一个脚本挂在你需要监听变化的gameobject上,代码如下
using UnityEngine;
using System;
/// <summary>
/// 把此MonoBehaviour挂在你需要监听的gameobject上
/// </summary>
public class MonBehaviourEvent : MonoBehaviour
{
/// <summary>
/// gameobject的SetActive事件变化通知
/// </summary>
public Action<bool> OnActiveChange;
void OnEnable()
{
OnActiveChange?.Invoke(true);
}
void OnDisable()
{
OnActiveChange?.Invoke(false);
}
}
扩展SetActive
SetActive(true),会触发MonoBehaviour.OnEnable()事件,就算对象之前本就是activeSelf=true,事件依然会发生;
SetActive(false),会触发MonoBehaviour.OnDisable()事件,就算对象之前本就是activeSelf=false,事件依然会发生;
所以在调用SetActive之前需要进行判断,扩展了如下,对于
public static class GameObjectEx
{
public static void SetActiveX(this GameObject go, bool state)
{
if (go && go.activeSelf != state)
{
go.SetActive(state);
}
}
public static void SetActive(this Component go, bool state)
{
if (go && go.gameObject && go.gameObject.activeSelf != state)
{
go.gameObject.SetActive(state);
}
}
}
Unity SetActive Event的更多相关文章
- unity中Event Trigger组件应用代码
using UnityEngine; using System.Collections; using UnityEngine.Events; using UnityEngine.EventSystem ...
- unity setactive的使用
1.可以用本身移出布局来实现隐藏 2.RawImage的texture的设置生成的一定要及时消除,避免内存泄漏
- EasyTouch 3.1中文翻译
Unity3D的Easy Touch 的手册最近寻找中文版本,google无果,自己动手.目前暂时只有c# ,javascript原理是一样的. 一.Quick Start 1-Import Easy ...
- 【Unity3D技巧】在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 (二) : 引入中间层NotificationCenter
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 一对多的观察者模式机制有什么缺点? 想要查看 ...
- Unity GameObject.activeSelf, GameObject.activeInHierarchy,GameObject.SetActive和SetActiveRecursively
activeSelf(read only只读):物体本身的active状态,对应于其在inspector中的checkbox是否被勾选activeInHierarchy(read only只读):物体 ...
- UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升
UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升 经确认,这个问题在手机上依然存在,不过占的比例非常小.因 ...
- C# 脚本与Unity Visual Scripting 交互,第一步(使用C# 脚本触发Script Graph的事件)(Custom Scripting Event)
写在前面 感谢Unity 川哥的帮助,解决了单独调用GameObject的需求 首先 需要在Unity 中创建一个自定义事件脚本(注释非常重要) using System.Collections; u ...
- 【Unity|C#】基础篇(8)——委托(Delegate)/ 事件(Event)
[学习资料] <C#图解教程>(第13~14章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.bai ...
- Unity Event Trigger 事件响应(二维,三维)添加组件
EventTrigger 上主要的方法有PointerEnter.PointerExit.PointerDown.PointerUp.PointerClick............都会显示在面板上面 ...
- 通过profiler对unity进行针对性优化
转 : http://user.qzone.qq.com/289422269/blog/1453815629?ptlang=2052 通过profiler对unity进行针对性优化 1. CPU U ...
随机推荐
- Axure 二维码扫码
基础布局 1.一个300X395的黑底黑框矩形,不透明度为20%,命名为"背景框": 2.一个150X150的白底白框矩形,不透明度为70%,命名为"扫描框": ...
- PPT 表格设计
顶级商业图表在哪找 https://www.mckinsey.com.cn/ 麦肯锡 图表 https://www.cbnweek.com 第一财经 https://data.163.com/ DAT ...
- peewee 操作 sqlite 锁表问题分析
在使用python orm 框架 peewee 操作数据库时时常会抛出以一个异常,具体的报错就是 database is locked 初步了解是因为sqlite锁的颗粒度比较大,是库锁.当一个连接在 ...
- 【Go】go语言变量类型 常量 函数基础 函数高级 setuptools将python项目打包 前后端联调
昨日回顾 使用setuptools将python项目打包 # 详细: python---->setuptools-->whl包结构 https://zhuanlan.zhihu.com/p ...
- POJ 3268 Silver Cow Party 题解 《挑战程序设计竞赛》
POJ 3268 Silver Cow Party 奶牛派对:有分别来自 N 个农场的 N 头牛去农场 X 嗨皮,农场间由 M 条有向路径连接.每头牛来回都挑最短的路走,求它们走的路的最大长度? 们其 ...
- 第四届蓝桥杯(2013)C/C++大学A组省赛题解
第一题:高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生 ...
- 记一次 .NET某道闸收费系统 内存溢出分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他的程序几天内存就要爆一次,不知道咋回事,找不出原因,让我帮忙看一下,这种问题分析dump是最简单粗暴了,拿到dump后接下来就是一顿分析. 二:Win ...
- 五分钟,手撸一个简单的Spring容器
工厂和Spring容器Spring是一个成熟的框架,为了满足扩展性.实现各种功能,所以它的实现如同枝节交错的大树一样,现在让我们把视线从Spring本身移开,来看看一个萌芽版的Spring容器怎么实现 ...
- WebGPU光追引擎基础课:使用WebGPU绘制三角形
大家好~我开设了"WebGPU光追引擎基础课"的线上课程,从0开始,在课上带领大家现场写代码,使用WebGPU开发基础的光线追踪引擎 课程重点在于基于GPU并行计算,实现BVH构建 ...
- [Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event.
在基于 Element-ui 写项目的时候,Chrome 提醒: [Violation] Added non-passive event listener to a scroll-blocking ' ...