我想让子代在玩家点击子代时,改变父代的颜色图像组件,这是我的代码。
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);
}
}
但不是父体被改变为新的颜色,而是子体被改变了。 有什么办法可以解决这些问题吗?
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);