需要访问非静态成员
本文关键字:静态成员 访问 | 更新日期: 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>();
'