我正在尝试制作一个我的背景滚动的游戏,具体取决于我希望玩家的速度。
我尝试创建一个非静态函数,它访问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的值。我不想创建对象引用,我只想简单地更改其他类中的值。
干杯
卢西奥
答案 0 :(得分:1)
您无法静态访问speed
,因为它不是静态成员。它是一个只能通过实例化的BackgroundScroller访问的实例变量。
假设Start
已在某处确保BackgroundScroller.current
不为空,则以下行将允许您访问使用当前滚动条的现有静态引用的速度。
BackgroundScroller.current.speed = setSpeed;
答案 1 :(得分:1)
因为speed
不是静态类型,您可以通过在speed
变量中添加静态来解决此问题。
尝试将您的速度类型更改为static float
,例如
public static float speed;
然后你最终可以设置speed
void Setspeed(float setSpeed){
BackgroundScroller.speed = setSpeed;
}