繁体   English   中英

如何引用不同类C#的非静态成员

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM