Sprite Kit Programming Guide翻譯

Sprite Kit編程指南(0):簡介  編程

 

簡介
關於Sprite Kit
重要提示:  這是API或開發技術的一個第一版文檔。雖然本文檔的技術準確性已被審閱過,但這還不是最終版本。這個蘋果的機密信息僅用於適用的蘋果開發者計劃的註冊會員。蘋果公司提供這些機密信息來幫助你計劃採用本文所述的技術和編程接口。此信息若有變動,根據這份文檔實現的軟件,應該用最終的操做系統軟件和最終文檔進行測試。本文檔的新版本可能會與API或技術的將來種子一塊兒提供。
 
Sprite Kit提供了一個圖形渲染(rendering)和動畫的基礎,你可使用它讓任意紋理(textured)圖像或精靈動起來。Sprite Kit採用的是傳統的渲染循環,容許在渲染前處理每一幀的內容。你的遊戲肯定場景的內容,以及這些內容如何在每幀中變化。Sprite Kit作的工做,就是有效地利用圖形硬件來渲染動畫的幀。Sprite Kit優化到本質上容許對動畫每一幀的任意修改。
 
Sprite Kit還提供了其餘對遊戲很是有用的功能,包括基本的聲音播放支持和物理模擬。此外,Xcode中提供了內置的Sprite Kit支持,能夠很容易地建立並在你的應用程序中使用複雜的特效和紋理圖冊(atlases)。這種框架和工具的組合,使Sprite Kit對於遊戲和其餘須要相似動畫的應用程序是一個很好的選擇。對於其餘類型的用戶界面動畫,使用Core Animation代替。
  sprite kit 結構
 
概覽
Sprite Kit在iOS和OS X可用。它使用主機設備提供的圖形硬件,以高幀速率複合2D圖像。Sprite Kit支持多種不一樣類型的內容,包括:
•    無紋理或有紋理的矩形(精靈)
•    文本
•    任意基於CGPath的形狀
•    視頻
 
Sprite Kit還提供了裁剪和其它特效的支持,容許你對所有或者部份內容應用這些效果。你能夠在每一幀中活動(animate)或者改變這些元素。你也能夠附加物理主體到將這些元素,使他們正確地支持武裝和碰撞。
 
經過支持豐富的渲染基礎和處理全部低級別的工做來提交OpenGL的繪圖命令,Sprite Kit容許你全神貫注解決更高層次的設計問題,並創造偉大的遊戲。
 
在Sprite視圖內由呈現場景繪製Sprite內容
動畫和渲染由SKView對象執行。你在一個窗口在放置這個視圖,而後渲染它的內容。由於它是一個視圖,因此它的內容能夠結合在視圖層次裏的其它視圖。
 
你的遊戲中的內容會被組織成場景(scenes),用SKScene對象表明它們。場景包含精靈和其餘要渲染的內容。場景也實現了每幀的邏輯和內容處理。在任何給定的時間內,視圖展現一個場景。只要一個場景被呈現出來,它的動畫和每幀邏輯會自動執行。
 
要使用Sprite Kit建立一個遊戲,你要建立一個或多個的SKScene類的子類。例如,你可能會建立單獨的場景類,用來分別顯示主菜單、遊戲畫面和遊戲結束後顯示的內容。你能夠很容易地在你的窗口中使用一個單一的SKView對象並在不一樣場景之間進行過渡。
 
有關章節: 「深刻Sprite Kit」, 「 使用場景間過渡」, 「 Sprite Kit最佳實踐」
 
節點樹定義出如今一個場景中的內容
SKScene類其實是SKNode類的後代。節點是全部內容的基本構建塊,而場景對象做爲一個節點對象樹的根節點。場景及其後代決定哪一個內容被繪製以及它渲染的方式。
 
每一個節點的位置在它的父節點定義的座標系中指定。節點的內容的其餘屬性也適用於它後代的內容。例如,當一個節點是旋轉,全部它的後代也跟着旋轉。你可使用節點樹創建一個複雜的圖像,而後經過調整最上層節點的屬性旋轉、縮放並融入整個圖像。
 
SKNode類繪製任何東西,但它對後代應用於它的屬性。每一種可繪製內容 由Sprite Kit的不一樣子類表示。其餘的節點子類不直接繪製內容,但修改它們後代的行爲。例如,你能夠在場景中使用一個SKEffectNode對象對整個子樹應用一個核心圖像過濾器(Core Image filter)。經過精確控制節點樹的結構,你肯定節點的渲染順序,讓你能夠在一個場景中佈局(layer)複雜的圖形效果。
 
全部節點對象都是響應者(responder)對象,派生(descending)自UIResponder或NSResponder,因此你能夠繼承任何節點類來建立接受用戶輸入的新類。視圖類自動擴展響應鏈來包含場景的節點樹。
 
相關章節: 「使用精靈」, 「 構建場景」, 「 使用其餘節點類型」
 
紋理保存可複用的圖形數據
紋理是用來渲染精靈的共享圖像。當你須要對多個精靈應用相同的圖像時,老是使用紋理。一般你經過加載存儲在你的應用程序bundle的圖像文件來建立紋理。然而,Sprite Kit也能夠在運行時從包括核心圖形圖像在內的其餘來源爲你建立紋理,或者甚至渲染把節點樹成紋理。
 
Sprite Kit經過處理較低級別的代碼需求來加載紋理和並讓它們對圖形硬件可用,來簡化了紋理的管理。紋理管理由Sprite Kit自動管理。可是,若是你的遊戲中使用了大量的圖像,你能夠經過控制部分的過程來提升性能。首先,你經過提示Sprite Kit紋理很快就須要來作這個。
 
紋理圖冊是在你的遊戲中一塊兒使用的一組相關的紋理。例如,你可使用一個紋理圖冊存儲讓一個角色活動須要的全部紋理或渲染遊戲設置級別的背景須要的全部瓷磚。Sprite Kit用紋理圖冊來提升渲染性能。
 
相關章節: 「使用精靈」
 
動做在場景中由節點執行
使用動做(actions)讓場景的內容動起來。每個動做都是一個對象,由SKAction類定義。你來告訴節點執行動做。而後,當場景處理動畫幀,動做就被執行。有些動做在一幀動畫內完成,而另外一些在完成前應用變化於多幀動畫。動做最多見的用途是改變節點的屬性。例如,你能夠建立動做來移動、縮放或旋轉節點,或使其透明。然而,動做也能夠更改節點樹、播放聲音、甚至是執行自定義代碼。
 
動做是很是有用的,但你也能夠組合動做來建立更復雜的效果。你能夠建立一組同時運行或順序運行的動做。你可讓動做自動重複。
 
場景中也能執行自定義的每幀處理。覆蓋你的場景子類的方法來執行額外的遊戲任務。例如,若是一個節點須要每幀移動,你可能會直接每幀地調整其屬性而不是使用一個動做來這樣作。
 
相關章節: 「添加操做到節點」, 「 高級場景處理」
 
添加物理主體和關節來在場景中模擬物理
雖然你能夠控制場景中的每個節點的確切位置,你常常想這些節點互相交流、碰撞並在這個過程當中告知速度的變化。你可能還須要模擬重力和其餘形式的加速度,這些都不在動做系統中處理的。要作到這一點,你能夠建立物理主體(SKPhysicsBody),並將它們附加到你場景中的節點上。每一個物理主體由形狀、尺寸質量和其餘物理特性定義。
 
當場景中包含物理主體,場景就在這些主體上模擬物理。一些勢力(forces),如重力和摩擦力,會自動應用。你也能夠對物理主體調用方法來應用本身的勢力。每一個主體的加速度和速度會被計算,而後主體彼此碰撞。而後,模擬完成後,相應的節點的位置和旋轉的被更新。
 
你物理主體的交互擁有精確的控制。你肯定哪些主體被容許相互碰撞 並單獨決定哪些交互能夠被你的應用程序調用。這些回調容許你勾(hook)到物理模擬中建立其餘的遊戲邏輯。例如,在一個物理主體被另外一個物理主體擊中時,你的遊戲可能會銷燬一個節點。
 
場景在一個附加的SKPhysicsWorld對象上定義了物理模擬的全局特性。你可使用物理世界定義整個模擬的重力,定義模擬的速度,並在場景中查找物理主體。你還可使用物理世界經過一個關節(SKPhysicsJoint)把物理主體鏈接在一塊兒。鏈接的主體根據關節的類型模擬在一塊兒。
 
相關章節: 「模擬物理」
 
如何使用本文檔
閱讀「深刻Sprite Kit」得到實現Sprite Kit遊戲的一個概述。而後經過其餘章節學習關於Sprite Kit功能的細節。一些章節包含建議的練習,以幫助你開發你對Sprite Kit的理解。學習Sprite Kit的最好方法是實踐;把一些精靈放到場景中並實驗它們!
 
最後一章,「Sprite Kit最佳實踐」,進入更詳細的使用Sprite Kit設計遊戲。
 
先決條件
在試圖使用Sprite Kit建立一個遊戲以前,你應該對應用程序開發的基礎知識至關熟悉。
•    在iOS上,參見今天開始開發iOS應用程序。
•    在OS X上,參見今天開始開發Mac應用程序。
 
尤爲的,你應該熟悉如下概念:
•    使用Xcode開發應用程序
•    Objective-C語言,包括塊(blocks)支持
•    視圖和窗口系統
 
雖然本指南展現了許多有用的建立遊戲的技術,它還不是一個完整的遊戲設計或遊戲開發指南。
 
參見
當你須要Sprite Kit框架的具體細節時,參見SpriteKit框架參考。
關於如何使用Xcode對Sprite Kit的內置支持的信息,參見紋理圖冊幫助和粒子發射器編輯器指南。
關於在SKSpriteNode類的詳細說明參見Sprite Tour。
要了解Sprite Kit中的物理系統,參見SpriteKit物理碰撞。
要深刻了解基於Sprite Kit的遊戲參見代碼:Explained Adventure。
相關文章
相關標籤/搜索