使用Instantiate()克隆对象会丢失侦听器

虚弱的

在运行时使用Instantiate()克隆按钮时onClick事件包含侦听器,该侦听器不存在于克隆中。

可以通过使Canvas具有按钮并附加以下脚本来测试该行为:

void Start () {
    var button = transform.GetChild (0);
    button.GetComponent<Button> ().onClick.AddListener (new UnityAction(() => Debug.Log("Event triggered!")));
    var button2 = Instantiate (button);
    button2.SetParent (transform);
}

单击克隆按钮将不会在控制台上打印任何内容。有没有一种方法可以克隆aGameObject以便保留事件侦听器?

珠峰

运行时侦听器不是持久性的,因此无法序列化。结果,当您克隆按钮时,它们不会继续传递。

您要么必须将方法添加到脚本中,然后将脚本附加到预制件上才能进行序列化,要么像对第一个脚本一样通过代码进行分配。

  • 实例化。当您在预制件或场景中的游戏对象或与此相关的任何其他对象上调用Instantiate()时(从UnityEngine.Object派生的所有对象都可以序列化),我们将序列化该对象,然后创建一个新对象,然后将数据“反序列化”到新对象上。(然后,我们在另一个变体中再次运行相同的序列化代码,在该变体中,我们使用该代码来报告正在引用哪些其他UnityEngine.Object。然后检查所有被引用的UnityEngine.Object是否属于被Instantiated()的数据。如果引用指向“外部”(例如纹理),则将其保持原样;如果引用指向“内部”(例如子游戏对象),则将引用修补到相应的副本。

http://blogs.unity3d.com/2014/06/24/serialization-in-unity/

至于AddListener

  • 此函数添加了一个“非持久”委托,这意味着它将不会显示在检查器中,并且在编辑器中退出播放模式时将被忘记。这些侦听器与“持久”侦听器不同,您可以在检查器中的编辑时添加这些侦听器,并在编辑和播放模式之间保持不变。

https://docs.unity3d.com/ScriptReference/Events.UnityEvent.AddListener.html

由于这些原因,我假设非持久对象没有序列化,然后没有传递给克隆的对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Instantiate()克隆对象会丢失侦听器

来自分类Dev

使用鼠标侦听器拖动对象

来自分类Dev

使用鼠标侦听器拖动对象

来自分类Dev

使用事件侦听器克隆引导程序元素

来自分类Dev

侦听器的对象标识

来自分类Dev

使用WeakReferenced侦听器

来自分类Dev

无法使用 JQuery 向克隆元素添加事件侦听器 - 用于 CSS 动画

来自分类Dev

如何将侦听器附加到克隆的元素?

来自分类Dev

如何将侦听器附加到克隆的元素?

来自分类Dev

添加范围对象侦听器

来自分类Dev

JavaScript在添加侦听器时丢失参考

来自分类Dev

窗口不在焦点时,侦听器丢失了C#

来自分类Dev

布局丢失侦听器中的 Android 片段

来自分类Dev

不使用匿名类添加操作侦听器会导致内存泄漏吗?

来自分类Dev

将子对象的父对象添加到侦听器是否会导致Node.js中的保留周期?

来自分类Dev

使用侦听器时无法通过“ this”

来自分类Dev

在Java中使用JFrame的侦听器

来自分类Dev

使用RxJS的多个关键侦听器

来自分类Dev

对按钮使用动作侦听器

来自分类Dev

使用侦听器动态创建TextView

来自分类Dev

创建事件侦听器时,函数会立即触发

来自分类Dev

使用回调/侦听器链接RxJava可观察对象

来自分类Dev

如何使用自己的动作侦听器在Android Studio中创建Checkbox对象

来自分类Dev

从使用鼠标侦听器选择的对象中获取信息

来自分类Dev

使用JavaScript的通用类对象侦听器遇到麻烦了吗?

来自分类Dev

错误:预期 onClick 侦听器是一个函数,而不是使用 reactjs 获取类型对象

来自分类Dev

使用 Python 将 JSON 对象发送到 tcp 侦听器端口

来自分类Dev

DatePickerDialog侦听器

来自分类Dev

Vuejs侦听器

Related 相关文章

热门标签

归档