首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用UniRx观察添加子GameObject并获取它?

如何使用UniRx观察添加子GameObject并获取它?
EN

Stack Overflow用户
提问于 2020-08-19 18:04:07
回答 1查看 57关注 0票数 0

首先,请看我的代码。

代码语言:javascript
复制
using UniRx;
using UniRx.Triggers;
....... 
        var parent = new GameObject("parent");
        parent.OnTransformChildrenChangedAsObservable()
            .Subscribe(_ =>
            {
                Debug.Log("child object is added");
            });
        var child = new GameObject("child");
        child.transform.SetParent(parent.transform);

当我设置孩子的父类时,肯定会调用OnTransformChildrenChangedAsObservable()。但是,我不知道如何获得添加的对象,因为参数"_“是单位,而不是GameObject。

这是我真正想做的事情。

代码语言:javascript
复制
        parent.OnTransformChildrenChangedAsObservable()
            .Subscribe(g =>
            {
                Debug.Log(g.name);
            });

有什么方法可以实现这一点吗?事实上,我并不在意是否使用了UniRx。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-08-23 12:12:40

现在,这个问题似乎已经解决了。首先,我准备了一个函数作为GameObject的扩展,来获取它自己的子对象,比如:

代码语言:javascript
复制
        public static List<GameObject> GetChildrenObjects(this GameObject gameObject)
        {
            var childrenObjects = new List<GameObject>();
            foreach (Transform child in gameObject.transform)
            {
                childrenObjects.Add(child.gameObject);
            }
            return childrenObjects;
        }

所以现在我可以获得最后添加的子对象,如下所示。

代码语言:javascript
复制
        parent.OnTransformChildrenChangedAsObservable()
            .Subscribe(_ =>
            {
                var added = parent.GetChildrenObjects().Last();
            });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63484618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档