2016-01-13 205 views
0

我是Swift的新手,爲了製作遊戲(以及相當新的編碼),我目前想要在兩個Gamescene之間傳遞一個變量。做一些研究,我得出的結論後,我需要一個[int]()一個struct持有我想這些數字出於某種原因而我不能賦值到我的整數數組generatedSequenceArray 我的結構:Swift 2結構與陣列

struct generatedSequenceForGameScene { 
    static var generatedSequenceArray = [Int]() 
} 

在我的我GameScene類的我有我的初始化generatedSequenceForGameScenestruct對象:

var generatedSequence = generatedSequenceForGameScene() 

我呼籲的方法是:

func pickNumbers(){ 

    for var x = 0; x < highLevel; ++x{ 
     generatedSequence.generatedSequenceArray.append(Int(arc4random_uniform(10))) 
     print(generatedSequence.generatedSequenceArray) 

    } 
} 

之前試圖得到各GameScene我的代碼變的舉動是這樣的:

變量: var generatedSequence = [Int]()

方法:

FUNC pickNumbers(){

for var x = 0; x < highLevel; ++x{ 
    generatedSequence.append(Int(arc4random_uniform(10))) 
    print(generatedSequence) 

    } 
} 

這給了我我想要的結果。 注:pickNumber方法被調用在一個名爲loadView()方法,它被放置在didMoveToView方法在程序

回答

0

有幾件事情需要注意。

首先,結構中的static關鍵字使generatedSequenceArray成爲靜態屬性。這意味着它在任何你稱之爲的地方都是一樣的。這不是你想要的。其次,除非你打算在你的結構中添加更多的屬性,否則沒有理由存在。爲什麼把它包裝在一個結構中?爲什麼不直接傳遞整數數組(你選擇的數字)?

三,類型名稱應該是正確的大小寫。所以generatedSequenceForGameScene應該是GeneratedSequenceForGameScene)。

+0

我之所以使用靜態變量是因爲我希望它無處不在。目的是讓我可以將這個整數數組傳遞到一個可以做其他事情的不同場景。此外,我發現這個例子[這裏](http://stackoverflow.com/questions/32290460/how-do-i-pass-data-between-two-scenes-in-swift) 此外我不知道任何其他將變量或數組傳遞給單獨的場景文件的方式。 (我根本沒有使用故事板) 謝謝你們關於正確外殼的錯誤,雖然我一定會修復它 – Avi

+0

不,不,不,不。 :-D如果你想在控制器之間傳遞一些東西,確保你爲一個控制器創建並保留下一個*的引用,或者*創建一個可以從任何地方訪問的單例,這些單例可以生成並提供公共數據。你的是不正當的使用'靜態'。正如我之前所說,這是*不*你想要的。 –

+0

謝謝,我以前聽說過單身人士這個詞(我知道它是一個只能做一次的類的實例),但我不知道如何使用它(在快速或其他任何地方),我該如何去做並使用它? (我沒有使用控制器,而是使用了'SKScene'的子類(在我意外地稱之爲'GameScene'之前(對不起)) – Avi

0

我不確定到底什麼不適合你。我想你在分享從一個遊戲場景到另一個場景的序列時遇到麻煩。如果這是問題,可能有以下幾點:

struct Sequence { 
    var seqArray = [Int]() 

    mutating func pickNumbers() { 

     for var x = 0; x < 10; ++x { 
      seqArray.append(Int(arc4random_uniform(10))) 
     } 
     print("picked: \(seqArray)") 
    } 
} 

class GameScene { 
    var s = Sequence() 
} 

var g1 = GameScene() 
var g2 = GameScene() 

g1.s.pickNumbers() 
g2.s.seqArray = g1.s.seqArray 

print(g2.s.seqArray) 
+0

我不想製作一個'GameScene'對象,我似乎也犯了'GameScene'的一個錯誤(對不起)我的意思是'SKScene'的一個小孩。在我的程序中,我希望子SKScene能根據用戶當前處於'x Avi

+0

如果你想要兩個變量,'highestLevel'和'Sequence'是相同的在應用程序的所有用途中,然後將它們設爲全局變量 –

+0

當您說'設備應該記住它'時,聽起來好像您要查找匹配搜索「NSUserDefaults persist」的SO(StackOverflow)答案。 –