首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Unity Setactive函数在指针事件中不起作用

Unity中的SetActive函数用于启用或禁用游戏对象或组件。它可以用于控制对象的可见性和交互性。然而,在指针事件中,SetActive函数可能不起作用的原因可能有以下几点:

  1. 父级对象的SetActive状态:如果父级对象被禁用(SetActive(false)),那么即使子级对象的SetActive状态为true,它们也不会在指针事件中起作用。在这种情况下,需要确保父级对象和所有相关的子级对象都处于激活状态。
  2. 触摸检测的优先级:Unity中的事件系统将触摸事件发送给首先检测到的对象,如果其他对象遮挡了目标对象,并且这些对象也具有触摸事件的响应能力,那么目标对象的SetActive函数可能不会触发。在这种情况下,需要调整对象的渲染顺序或使用事件的屏蔽功能来确保目标对象能够正确响应触摸事件。
  3. 指针事件的响应函数:SetActive函数应该在正确的指针事件的响应函数中调用。例如,在OnPointerClick函数中调用SetActive函数会在点击对象时启用或禁用对象。确保将SetActive函数放在适当的位置,以便在需要时正确地调用。

总结起来,要确保Unity中的SetActive函数在指针事件中起作用,需要注意父级对象的SetActive状态、触摸检测的优先级以及正确调用SetActive函数的位置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

指针函数的作用

一个函数在编译时被分配给一个入口地址,这个函数入口地址被称为函数指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。...pfun是指向avg函数函数指针,调用pfun函数指针,就和调用函数avg一样。...从函数返回指针 当我们定义一个返回指针类型的函数时,形式如下: int *fun(参数列表) { ……; return p; } p是一个指针变量,它可以是形式如&value的地址值。...指针数组 数组的元素均为指针变量的数组称为指针数组,一维指针数组的定义形式为: 类型名 *数组名 [数组长度]; 类如: int *p[4]; 指针数组的数组名也是一个指针变量,该指针变量为指向指针指针...指针数组的元素可以使用指向指针指针来引用。

2.8K20

Unity的一些基础总结

时间暂停与鼠标锁定、按钮事件挂载、动画播放状态切换 使用 Time.timeScale = 0; 可以将时间暂停,恢复则设置成1....使用 Cursor.lockState = CursorLockMode.Locked; 可以设置鼠标指针锁定(即不显示)....5. 3d物品展示ui层 有时候我们需要把一个在世界的3d物品展示ui上,那么可以采用如下方法: i 先将该物品的layer设置成thing(或者其它的,该layer标识的所有东西都会被第二相机捕捉到...细碎的总结 trigger是collider碰撞箱,该触发物体无需物理引擎,因为无论怎样都会被穿透。 音乐组件为audiosource。 如果物体具有物理引擎,那么也应该有碰撞盒子。...动画可能会产生一些事件,使用 animator.fireEvents = false; 可以取消所有的动画返回事件

1.3K20
  • 【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 函数 间接修改 指针变量 的值 | 函数 间接修改 外部变量 的原理 )

    文章目录 一、直接修改 和 间接修改 指针变量 的值 二、函数 间接修改 指针变量 的值 三、函数 间接修改 外部变量 的原理 一、直接修改 和 间接修改 指针变量 的值 ---- 直接修改 指针变量...return 0; } 执行结果 : 二、函数 间接修改 指针变量 的值 ---- 函数 间接修改 指针变量 的值 , 将 指向一级指针 的 二级指针 变量 , 传递到 函数形参 ,... 函数 , 使用 * 符号 , 修改 二级指针 指向的 一级指针 的变量值 ; 注意 : 如果要 修改 一级指针 的值 , 必须 传入 指向 一级指针 的 二级指针 变量 才可以 , 传入一级指针变量...n", p); // 函数 , 简介修改指针的值 modify_pointer(p2); // 打印一级指针地址 printf("%d\n", p);...三、函数 间接修改 外部变量 的原理 ---- 如果要 修改 一级指针 的值 , 必须 传入 指向 一级指针 的 二级指针 变量 才可以 , 传入一级指针变量 , 不能修改一级指针变量值 ; 这是因为

    21.2K11

    零基础入门 28:MessageBox的制作和使用

    #region Private Attributes //messagebox使用类型,默认为1样式(只有1个按钮) private int m_useType = 1; //按钮点击事件...Start函数里完成了对三个不同按钮的点击事件,ShowBox是我们的核心接口,也是调用显示messageBox的主接口。...action是我们这个弹窗需要的代理回调事件,而回调可能需要参数传回,所以最后一个参数是我们返回的数据,object类型是任意类型,需要在接收使用的时候做装箱类型转换。...之后就可以Unity里把这个脚本挂在到MessageBox上,并且关联组件,如下图。 ? 之后呢,我们在场景里创建一个按钮,实现以下功能。...点击左侧的按钮,我们逻辑写到,如果点击的是左侧的,会输出两句日志,第一句就是点击了左侧按钮,第二局是把我们传参的回调参数进行输出。 ? 点击左侧的按钮日志如下图 ?

    1.1K30

    GME+MGOBE|联机游戏与实时语音的碰撞

    另外我们 Unity 的官方网站上下载到MGOBE的DEMO,我们会将 GME 游戏语音集成在这个 DEMO 里面。...2、导入SDK 将下载好的 SDK 文件解压后,拷贝到 Unity 工程,删除 Plugin 的平台文件夹,只保留 Android、gmesdk.bundle 以及 x86_64。...当点击登录之后,我们在按钮的响应事件中进行初始化的操作,即在【登录】按钮事件调用以下代码: //获取面板上的数字作为参数 GME_OpenId = loginPanel.myOpenId.text;...= QAVError.OK) { Debug.Log("SDK初始化失败:" + ret); return; } 接下来 Unity Update 方法我们添加 GME 的 Poll...我们的逻辑是,进入联机对战房间的时候,同时也进入语音房间。先在 Init SDK 成功后,监听进入语音房间事件的回调以及退出语音房间事件的回调。

    7.5K71

    Unity-BattleStar丨5. 给BattleStar游戏添加UI

    ,重命名Menu,并将Canvas重命名MainMenu 根据上篇文章内容,Meun的锚点要在Canvas中心,这样缩放屏幕时会保持相对位置不变 2、将MainMenu Inspector面板Render...的自适应算法) b.当UIScaleMode为Scale With Screen Size时,相当于使用unity的自适应算法,此时unity会根据屏幕分辨率自动调节Scale Factor的值。...它的意思是在任何屏幕上不改变 Canvas 的 DPI(是一个量度单位,用于点阵数码影像,指每一英寸长度,取样、可显示或输出点的数目),而是调节 Canvas 的物理大小总是与屏幕保持一致。...3、将要使用的UI图片设置为Sprite(2D and UI) 4、将图片“MainPanel_BackGround”拖入Menu-Source Image 5、Meun下创建名为“List”的Image...创建Text,注意锚点都是父物体中心 8、进度条等可用Image UI的Image Type-Filled-Fill Method设置,注意其必须先添加进Source Image才可设置 9、添加点击事件

    11810

    怎样 Unity 创建 UI

    Unity 3D 提供了许多 UI 组件,你都可以在你的游戏中使用它们。在这篇文章,我会指导你 unity 的菜单如何创建一个简单的暂停菜单。...层级视图『Hierarchy』右键然后选择 UI -> Canvas。 UI-2 unity 对于所有的 UI 组件都需要 Canvas 。本质上,canvas 是你放置 UI 组件的容器。...UI-6 我的界面如下: UI-7 你可能最先注意到我们文本框中使用的 tag。Unity 可以使用富文本,它允许你使用标记 tag 值来修改文本的外观。本例,我们指定粗体,红色字体。...为了让你通过一个按钮来调用一个函数,那么这个函数需要声明为 public,这就是为什么我『Manager』脚本把所有函数设置为public。...Unity 编辑器无法退出应用程序,所以『Application.Quit()』函数不会做太多。

    5.6K20

    AndroidUnity大乱斗-完整双方集成交互指南

    3D场景 任意操作布局的按钮/3D物品(缩放旋转等) 互相消息通信(你叼我,我叼你) 自由切换Unity的场景 动态加载手机SD卡3D资源,一次开发到处使用。...小白面前装逼用 ? 故事正题 首要任务就是将Unity项目导出来(已经做好了3D的处理,关于通信和动态加载在下面介绍) ?...(false); } //Unity的某个物体出发此事件 public void UnityCallAndroid() { Debug.Log("调用方法...,让Unity开发自己去做 andorid触发,unity换场景,这个借助上面说的消息通信来实现 这还有一个技巧,如果资源不是很多且一个场景的话,可以让Unity一次直接渲染出来存在字典里,然后想显示哪个...如果模型unity没问题,android端穿帮,可以看看发布质量,将android的设置成高的 ? 3.如果反复执行的模型动画不对,怎么不对?

    1.3K20

    Unity性能调优手册8UI:Canvas,Layout,RaycastTarget,Mask,TextMeshPro,UI显示

    (将文本绘制到屏幕的机制)的调优实践 Canvas分区 uGUI,当Canvas的元素发生变化时,会运行一个过程(重建)来重建整个Canvas UI网格。...如果子画布包含的元素发生变化,则只会运行子画布的重建,而不会运行父画布。然而,仔细观察,当子画布的UI被SetActive切换到活动状态时,情况似乎是不同的。...根据uGUI内部实现的评论,这种现象即使UI不移动任何东西时也会产生每帧加载,似乎是Unity 2019.3包含的问题修复的副作用。...它有个函数可以调整它下面所有物体的透明度。...如果你使用这个函数并将透明度设置为0,你可以隐藏其CanvasGroup 虽然这些方法有望避免由SetActive引起的负载,但你可能需要小心,因为GameObject将保持活动状态。

    65531

    React useEffect中使用事件监听回调函数state不更新的问题

    很多React开发者都遇到过useEffect中使用事件监听回调函数获取到旧的state值的问题,也都知道如何去解决。...addEventListenerShowCount // 点击addEventListenerShowCount的按钮 eventListener事件回调函数打印state值add // 点击add...state值控制台打印结果如下图片手动实现的简易useEffect事件监听回调函数也会有获取不到state最新值的问题下面根据上面React代码模拟为常规的js代码let obj; // 模拟btn...React函数也是一样的情况,某一个对象的监听事件的回调函数,这个对象相当于全局作用域变量(或者与函数同一层作用域链),回调函数获取到的state值,为第一次运行时的内存的state值。...而组件函数内的普通函数,每次运行组件函数,普通函数与state的作用域链为同一层,所以会拿到最新的state值。

    10.8K60

    Unity SpriteAtlas 使用FAQ

    操作上,这个没什么问题。有问题的是SpriteAtlasManager这块,需要去理解一下调用机制。 操作 UNITY每次更新旧操作方式都会变得更加简单,这次亦是如此。...取消后需要在代码监听SpriteAtlasManager.atlasRequested事件程序中加载贴图集。...04"); objs[2].GetComponent().sprite = at.GetSprite("04"); } } 因为没有对 SpriteAtlasManager 的回调函数进行监听...第一次加载相应图集的时候会自动调一次,这时候函数的回调内你可以轻松的写一段加载图集的代码。 加载时机 哦对了,这个图集什么时候被加载 ?...如果你实例化物体关联到Sprite 就会执行 atlasRequested 回调,UNITY内部做了一个检测,如果该关联到的图集是第一次被关联到,那么才会调用一次。

    6710

    C#协程

    Unity协程的执行原理 UnityGems.com给出了协程的定义: A coroutine is a function that is executed partially and, presuming...Unity每一帧(Frame)都会去处理对象上的协程。Unity主要是Update后去处理协程(检查协程的条件是否满足) ?...life.png 整理得到: 通过设置MonoBehaviour脚本的enabled对协程是没有影响的,但如果 gameObject.SetActive(false) 则已经启动的协程则完全停止了,即使...迭代器方法运行到 yield return 语句时,会返回一个expression表达式并保留当前代码的位置。 当下次调用迭代器函数时执行从该位置重新启动。...Unity每帧做的工作就是:调用 协程(迭代器)MoveNext() 方法,如果返回 true ,就从当前位置继续往下执行。

    1.9K20

    C++11 析构函数执行lambda表达式(std::function)捕获this指针的陷阱

    test_lambda_base 类的功能很简单,就是析构函数执行构造函数传入的一个std::function对象。...->清除成员变量->析构基类部分(从右到左)->析构虚基类部分 所以上面代码test_lambda_base的析构函数执行子类test_lambda的成员变量fun时,fun作为一个std::...因为问题的原因不是lambda表达捕获的this指针不对,而是基类的析构函数,lambda表达式所捕获的this指针所指向的子类对象部分的数据已经无效,不可引用了。...总结 如果在基类的析构函数执行子类提供lambda表达式,lambda表达式要避免使用子类类成员变量。...因为这时子类的类成员变量已经被析构了,但是子类指针类型、基本数据类型变量因为不存在析构的问题所以还是可以用的。

    1.6K10

    unity协程简介

    Unity,一般的方法都是顺序执行的,一般的方法也都是一帧执行完毕的,当我们所写的方法需要耗费一定时间时,便会出现帧率下降,画面卡顿的现象。...当我们调用一个方法想要让一个物体缓慢消失时,除了Update执行相关操作外,Unity还提供了更加便利的方法,这便是协程。...如果将该方法改写并放到Update函数可实现我们预期的效果,但是还不够优雅。...也可以指定的时间或事件后继续执行,而不影响上一次执行的就结果,提供了极大地便利性和实用性。 协程每次执行时都会新建一个(伪)新线程来执行,而不会影响主线程的执行情况。...只有将挂载该脚本的物体设置为SetActive(false)时才会停止。 Unity调用StartCoroutine()后不会等待协程的内容返回,会立即执行后续代码。

    84720
    领券