2014-12-23 3 views
0

에 액세스하려면 개체 참조가 필요합니다. 그렇기 때문에 C# 프로그래밍에는별로 좋지 않습니다. 따라서 이것은 바보 같은 질문 일 수 있습니다. 다른 사람이 만든 게임에 손을 얹고 슬로건을 사용했습니다. 슬로건을 무작위로 선택하여 더 이상 정적이 아닌 슬로건 목록으로 변경했습니다.비 정적 멤버

using UnityEngine; 
using System.Collections; 

public class GameVersion : MonoBehaviour { 

public const float AsFloat = 0.6f; 
public const string AsString = "alpha v0.2.5"; 
public string Slogan = randomSlogan[new Random().Next(0,randomSlogan.Length) ]; 
string randomSlogan = { 
    "3000", 
    "bananas", 
    "now with sand" 
}; 

} 

그러나, 나는 여기에두고있어

GUI.Box(pos,""); 
    GUILayout.BeginArea(pos); 
    //Game version and slogan 
    GUIStyle version = new GUIStyle(GUI.skin.label); 
    version.fontSize = 60; 
    version.fontStyle = FontStyle.Bold; 
    GUILayout.Label(GameVersion.AsString,version); 
    GUILayout.Label(GameVersion.Slogan); //Right here. 

필자는 다른 결과를 볼 수있는 "개체 참조가 비 정적 멤버 'Gameversion.Slogan'를 액세스하는 데 필요한"오류가 나타납니다 동일한 문제가 있지만 내 코드에 넣는 데 어려움을 겪고 있습니다. 아무도 여기에 맞는 솔루션을 제안 할 수 있습니까? 고맙습니다!

또한 미안, 내가 작은 코드 또는 많은 코드에 게시하는 경우!

GameVersion instance = new GameVersion(); 
GUILayout.Label(instance.Slogan); 

인스턴스를 만들기 일반적으로 내 경험에서 바람직하다 :

+0

확실히 GameVersion 인스턴스에 대한 참조를 사용해야합니다. 그 필드는 정적이 아닙니다. – BradleyDotNET

+1

랜덤 슬로건을 반환하기 위해'Random' 인스턴스 변수를 만들어 사용해야합니다. '새로운 무작위(). 다음은'당신이하고 있다고 생각하는 것을하지 않습니다. –

답변

0

당신은 당신의 클래스는 정적 만들거나 GameVersion 클래스의 인스턴스를 확인해야합니다.

+0

"그냥 인스턴스 만들기"는 * 드물게 * 정답입니다. 그 인스턴스는 대개 다른 곳에서 발생합니다. – BradleyDotNET

+0

당신이 맞습니다,하지만 난 단지 수천 번 질문되었을이 질문에 빠르고 더러운 대답을하려고합니다. 그는 자세한 추론을 위해 사람들을 볼 수 있습니다. – Bcpouli

관련 문제