访问非静态成员所必需的

时间:2013-12-17 13:35:10

标签: c# unity3d

我正在尝试将一个函数从一个脚本调用到另一个脚本但是我得到了:  访问非静态成员`FireBlock.FireOn()'需要对象引用 具有我试图调用的函数的脚本是包含它的FireBlock,它附加到附加到游戏对象的盒子对撞机。

using UnityEngine;
using System.Collections;

public class FireBlock : MonoBehaviour {
public void FireOn ()
{
    collider.enabled=false;
}

以下是我试图在其他脚本中调用它的方法。

void Update ()
{

    FireBlock.FireOn ();
}

我出错的任何想法?我已经尝试将FireOn函数设为公共静态,只是无效,但没有工作。

2 个答案:

答案 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>();

`