2014-02-08 60 views
0

我想要做的是:OOP怎麼辦類 「文件夾」

一些腳本訪問:

在GUI3D腳本
//... 
string Str = "aab"; 

void Update(){ 
    GUI3D.Label(Str); 
    GUI3D.TextField(ref Str); 
} 
//... 

using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 
public static class GUI3D { 
    static void Label(string Text){ 
     // make text apear 
    } 
    static int CursorField; 
    static void TextField(ref string Text){ 
     // changing cursor field depending on the inputs 
     // change text and make it apear 
    } 
} 

我希望我沒有剝下太多。 但我想要做的是隻有TextField可以訪問CursorField和其他人。

所以,如果我想做的事:

static void Label(string Text){ 
     // make text apear 
     CursorField = 0; // that I'd get error due to protection level. 
    } 

我將如何做呢?

回答

0

你有一個結構問題。你不能從自己隱藏一個類成員。你正在告訴你的靜態GUI3D類到Label()的東西,你也試圖隱藏自己的數據?爲什麼需要隱藏GUI3D類的一個成員函數中的數據?

+0

就像我說我會成爲一個子函數這GUI3D訪問,但它的成員是私有的,爲什麼我需要隱藏它,因爲我的3D GUI已經是600線長,它開始變得有點confuzing。我也不在乎是否必須更換架構,這就是爲什麼我問這個問題。 – MilitaryG

0

如果你不介意改變你的架構了一下,你可以嘗試這樣的類(原諒語法錯誤,我沒有方便的編譯器:d):

public class MyLabel { 
    private string _text; 
    public string Text { 
     get { return _text; } 
     set { _text = value; CursorField = _text.Length; } 
    } 

    public int CursorField { get; private set; } 
} 

正如baoghal說,你不能隱藏自身類成員 - 所以在輔助類&換行功能只讓類本身修改CursorField。