我正在尝试将一个函数从一个脚本调用到另一个脚本但是我得到了: 访问非静态成员`FireBlock.FireOn()'需要对象引用 具有我试图调用的函数的脚本是包含它的FireBlock,它附加到附加到游戏对象的盒子对撞机。
using UnityEngine;
using System.Collections;
public class FireBlock : MonoBehaviour {
public void FireOn ()
{
collider.enabled=false;
}
以下是我试图在其他脚本中调用它的方法。
void Update ()
{
FireBlock.FireOn ();
}
我出错的任何想法?我已经尝试将FireOn函数设为公共静态,只是无效,但没有工作。
答案 0 :(得分:4)
您需要创建FireBlock
的实例,然后使用该实例调用该方法。
FireBlock fireBlock = new FireBlock();
fireBlock.FireOn();
由于FireOn
是一个实例方法,因此无法使用类名称调用它。您只能对static
方法执行此操作。
答案 1 :(得分:1)
假设您正在尝试访问单声道行为,首先需要访问GameObject ..
有几种方法可以做到这一点,这是您的主要工具。
GameObject.Find(name string)
GameObject.FindWithTag(tag string)
获得游戏对象后,现在需要获取脚本。您可以使用GetComponent<>()
所有这一切看起来像这个'
FireBlock MyFireBlock = GameObject.Find("mygameobject").GetComponent<FireBlock>() ;
或
GameObject mygameobject = GameObject.Find("mygameobject") ;
FireBlock MyFireBlock = Mygameobject.GetComponent <FireBlock>();
`