gpt4 book ai didi

c# - 使用静态时出现 "An object reference is required to access non-static member"错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:36 26 4
gpt4 key购买 nike

我在类“Paddle”中制作了一个方法(changePaddleSize),并试图从另一个类“paddleMinimizer”中调用它。执行此操作时,出现以下错误:

An object reference is required to access non-static member `UnityEngine.Component.transform'

这是我的类(class):

public class Paddle : MonoBehaviour {

public static void changePaddleSize(){

transform.localScale = new Vector3(2f, 0.5f, 1);

}
}

public class paddleMinimizer : MonoBehaviour {
public GameObject triggerText;
void OnCollisionEnter () {
Paddle.changePaddleSize ();

}

}

我显然做错了什么,但我该如何解决呢?如果有其他方法可以做到这一点,请告诉我。我们将不胜感激。

最佳答案

假设永远只有一个 Paddle,一种选择可能是声明一个作为 Paddle 的静态变量,并在您的代码中引用它。

public class Paddle : MonoBehaviour {

public static Paddle global;

void Awake () {
Paddle.global = GetComponent<Paddle>();
}

public static void changePaddleSize(){
Paddle.global.transform.localScale = new Vector3(2f, 0.5f, 1);
}

}

这样你仍然可以从任何地方调用 Paddle.changePaddleSize (); 并让它工作。


或者,您可以让 changePaddleSize 不是 是静态方法,而是调用 Paddle.global.changePaddleSize():

public class Paddle : MonoBehaviour {

public static Paddle global;

void Awake () {
Paddle.global = GetComponent<Paddle>();
}

public void changePaddleSize(){
transform.localScale = new Vector3(2f, 0.5f, 1);
}

}

关于c# - 使用静态时出现 "An object reference is required to access non-static member"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28921135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com