gpt4 book ai didi

c# - 从统一命名空间中的另一个类(在克隆对象上)获取一个函数,c#

转载 作者:行者123 更新时间:2023-12-04 16:58:49 25 4
gpt4 key购买 nike

我不太清楚什么是正确的解决方案,所以我希望有人能帮助我/解释我做错了什么:

我在同一个命名空间中有两个类 farm ; WhichAnimal.csPig.cs .我尝试获取 EatFood()函数来自 Pig.csWhichAnimal.cs .带有 Pig.cs 的对象附加到它的脚本,仅在场景开始时生成,并且是 assets/prefabs 文件夹中预制件的克隆。

我做错了什么/我如何得到 EatFood()函数在 WhichAnimal 中工作脚本?

pig 类:

using System.Collections;
using UnityEngine;
using UnityEngine.UI;

namespace Farm {
class Pig : MonoBehaviour
{

public GameObject Balloon;
public Text text;
public string name;

public void EatFood()
{
Balloon.SetActive(true);
text.text = "";
}
}

哪个动物类:
using System;
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;

namespace Farm {
public class WhichAnimal : MonoBehaviour {

public Pig pig;

public void Start() {
pig = GetComponent<Pig>().EatFood();
}

public void GiveFood() {
pig.EatFood();
}
}

最佳答案

我认为问题来自:

public void Start() {
pig = GetComponent<Pig>().EatFood();
}
GetComponent<Pig>()将尝试找到一个组件(从单一行为派生的类) Pig附加到相同的 gameObject作为调用 GetComponent 的脚本.这意味着要使其正常工作,您需要 PigWhichAnimal同上 gameObject .

所以第一个解决方案,获取 Pig 的实例当您实例化 gameObject 时用这个脚本。

其他解决方案,使用 Object.FindObjectOfType<Pig>()查找 Pig 的实例或 FindObjectsOfType<Pig>()有一个 Pig 的数组如果有多个^^。

但要小心使用,不是每一帧,一次。它可能会消耗资源。

关于c# - 从统一命名空间中的另一个类(在克隆对象上)获取一个函数,c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50679921/

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