![](/img/trans.png)
[英]C# “An object reference is required for the non-static field,” Class issue with Static Member Function
[英]How do I reference a non-static member of a different class c#
我正在尝试制作一个游戏,其中我的背景会根据我希望玩家前进的速度而滚动。
我尝试创建一个非静态函数,该函数将BackgroundScroller.speed作为传递值的一种简单方法。
。
(PlayerController.cs)
void Setspeed(float setSpeed){
BackgroundScroller.speed = setSpeed;
}
BackgroundScroller.cs看起来像这样:
using UnityEngine;
using System.Collections;
public class BackgroundScroller : MonoBehaviour {
public float speed = 0;
public static BackgroundScroller current;
float pos = 0;
void Start () {
current = this;
}
public void Go () {
pos += speed;
if (pos > 1.0f)
pos-= 1.0f;
renderer.material.mainTextureOffset = new Vector2 (pos, 0);
}
}
。
我尝试从PlayerController.cs访问BackgroundScroller.speed时遇到的错误是:“访问非静态成员“ BackgroundScroller.speed”需要对象引用。
我根本不了解如何从PlayerController.cs访问BackgroundScroller.speed的值。 我不想创建对象引用,我只想简单地更改其他类中的值。
干杯
路西欧
您不能静态访问speed
因为它不是静态成员。 它是一个实例变量,只能通过实例化的BackgroundScroller进行访问。
假设已经在某个位置调用了Start
并确保BackgroundScroller.current
不为null,则以下行将使您能够访问将当前静态引用用于当前滚动器的速度。
BackgroundScroller.current.speed = setSpeed;
由于speed
不是静态类型,因此可以通过在speed
变量中添加静态来解决此问题。
尝试将速度类型更改为static float
,例如
public static float speed;
然后您最终可以设置speed
值
void Setspeed(float setSpeed){
BackgroundScroller.speed = setSpeed;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.