gpt4 book ai didi

c# - GetComponent 要求请求的组件 'Button' 派生自 MonoBehaviour 或 Component 或者是一个接口(interface)

转载 作者:行者123 更新时间:2023-12-05 02:03:34 26 4
gpt4 key购买 nike

我几乎失去了所有的希望。我想做的基本上是实例化我拥有的预制件,它基本上是一个带图像的按钮,实例化后,我想设置一个要调用的 onClick 函数,但它一直告诉我这个错误:

GetComponent 要求请求的组件“Button”派生自 MonoBehaviour 或 Component 或者是一个接口(interface)

我不明白我做错了什么,这是我的代码:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;

public class InventoryCoordinator : MonoBehaviour
{
// Start is called before the first frame update
public GameObject prefabPocion;
void Start()
{
GameObject panelInventuario = GameObject.FindGameObjectWithTag("Hotbar");
if (panelInventuario)
{
GameObject primerSlot = panelInventuario.transform.GetChild(0).gameObject;
GameObject segundoSlot = panelInventuario.transform.GetChild(1).gameObject;
GameObject tercerSlot = panelInventuario.transform.GetChild(2).gameObject;
var newPocion = Instantiate(this.prefabPocion, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity);
this.SetAndStretchToParentSize((UnityEngine.RectTransform)newPocion.transform.transform, (UnityEngine.RectTransform)primerSlot.transform.transform);
var button = GameObject.FindWithTag("PotionFreeze").gameObject.GetComponent<Button>();
button.clicked += manguito;
//newPocion.transform.parent = primerSlot.transform;
}
}

// Update is called once per frame
void Update()
{

}

public void manguito()
{
Debug.Log("full maracaton");
}

public void SetAndStretchToParentSize(UnityEngine.RectTransform _mRect, UnityEngine.RectTransform _parent)
{
_mRect.anchoredPosition = _parent.position;
_mRect.anchorMin = new Vector2(1, 0);
_mRect.anchorMax = new Vector2(0, 1);
_mRect.pivot = new Vector2(0.5f, 0.5f);
_mRect.sizeDelta = _parent.rect.size;
_mRect.transform.SetParent(_parent);
_mRect.localScale = new Vector3(1f, 1f, 1f);
}
}

我已经尝试获取游戏对象并将其向前和向后转换,但是什么也没有,我需要你们的帮助!提前致谢

最佳答案

您遇到此问题是因为您使用的是 UnityEngine.UIElements 中的 Button,而 afaik 尚不支持游戏内按钮(供自定义编辑器使用)。使用 UnityEngine.UI 代替,并替换:

button.clicked += manguito;

button.onClick.AddListener(manguito);

关于c# - GetComponent 要求请求的组件 'Button' 派生自 MonoBehaviour 或 Component 或者是一个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65028535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com