c# - 统一从同一命名空间中的另一个类(在克隆对象上)获取函数,c#
问题描述
我不太清楚什么是正确的解决方案,所以我希望有人可以帮助我/解释我做错了什么:
我在同一个命名空间中有两个类farm
;WhichAnimal.cs
和Pig.cs
。我尝试从 to获取EatFood()
功能。附有脚本 的对象仅在场景启动时生成,并且是 assets/prefabs 文件夹中预制件的克隆。Pig.cs
WhichAnimal.cs
Pig.cs
我在做什么错/如何让EatFood()
函数在WhichAnimal
脚本中工作?
猪类:
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
. 这意味着您需要Pig
并且WhichAnimal
在相同的情况下工作gameObject
。
因此,第一个解决方案是获取使用此脚本Pig
实例化的实例。gameObject
其他解决方案,如果有多个^^ ,则Object.FindObjectOfType<Pig>()
用于查找Pig
或FindObjectsOfType<Pig>()
拥有一个数组。Pig
但要小心使用它,而不是每一帧,只用一次。它可能会消耗资源。
推荐阅读
- pandas - ValueError:“C”的分组器不是一维的
- javascript - 第二次和第三次加载包含下拉表单的 Bootstrap 模态时出现 Javascript 错误
- python - python数组计算每个元素
- python - 使用 Python 3 将阿拉伯语写入 CSV 文件
- mysql - AWS Elastic Beanstalk 中的 mysqlclient 安装错误
- javascript - 对数据从最新到最旧的 Firebase 数据库进行排序
- kubernetes - 如何使 chown 命令在 nfs 共享文件夹中工作
- python - 像我在 Jinja 模板中那样使用点获取字典值时,在 Python 中得到“字典中没有书籍属性”
- python - 检查某个元素是否在二维数组的某个数组中出现 x 次
- windows - PowerShell 将 webbinding SSL 证书更新为新的导入证书