GetComponentInParent<Image>() 不改变父体的组件。

问题描述 投票:0回答:1

我想让子代在玩家点击子代时,改变父代的颜色图像组件,这是我的代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class DragOption : MonoBehaviour, IPointerClickHandler
{

   public void OnPointerClick(PointerEventData eventData)
   {
      GetComponentInParent<Image>().color = new Color32(255, 235, 0, 255);
   }
}

但不是父体被改变为新的颜色,而是子体被改变了。 有什么办法可以解决这些问题吗?

c# unity3d
1个回答
0
投票

GetComponentInParent 包括调用对象本身的组件搜索。

返回Type类型的组件 游戏对象中的r其父母的任何一个。

所以,如果你的 "孩子 "也有一个 Image 组件本身(如果我没有理解错的话,就是这种情况),它将返回那个组件。


为了确保它至少有一个以上的父节点,你会更愿意去做

transform.parent.GetComponentInParent<Image>().color = new Color32(255, 235, 0, 255);

或者如果你确定直系亲属就是你想要的那个人,你可以直接做的是

transform.parent.GetComponent<Image>().color = new Color32(255, 235, 0, 255);
© www.soinside.com 2019 - 2024. All rights reserved.