需要访问非静态成员

本文关键字:静态成员 访问 | 更新日期: 2024-10-30 18:19:30

我正在尝试将函数从一个脚本调用到另一个脚本中,但我得到:访问非静态成员FireBlock.FireOn()需要对象引用

带有我尝试调用的函数的脚本FireBlock包含附加到附加到游戏对象的盒子碰撞体的脚本。

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

这是我尝试在另一个脚本中调用它的方式。

void Update ()
{
    FireBlock.FireOn ();
}

有什么想法我哪里出错了吗?我尝试过将FireOn函数设置为静态公共,只是无效,但没有任何工作。

需要访问非静态成员

您需要创建FireBlock的实例,然后使用该实例调用该方法。

FireBlock fireBlock = new FireBlock();
fireBlock.FireOn();

由于FireOn是一个实例方法,因此不能使用类名调用它。您只能对static方法执行此操作。

假设您正在尝试访问单声道行为,您首先需要访问游戏对象。

有几种方法可以做到这一点,这是您的主要工具。

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

'