步兵 經驗篇 one step

2021-07-24 13:31:43 字數 2706 閱讀 7926

前段時間羅永浩我發布會上出了個,這麼個東西,今天說的又更step有關,所以就引用一下。

話說沒看過的,不如週末看看這個發布會,我覺得價值遠比手機大,春晚都沒這麼好看,哈哈。

但是隨著工作經驗的增加,雖然我可以不用cocos的scene,但是還是來抽象出乙個scene類,

用來做資源管理,遊戲中各個階段理好自己的部分,讓程式更加清晰。

比如 我遊戲中有分為常見的 登入階段、主介面階段、核心戰鬥階段。

這三個部分 各有特點:

1、登入階段:只是個過場,簡單也好華麗也罷, 進入遊戲後,基本很少回來。

2、主介面階段:ui龐大,資源、ui特效、粒子特效 會占用大量的記憶體。

3、核心戰鬥階段:人物、怪物、技能特效等 占地用大力記憶體。

最理想的情況應該是充分利用記憶體,進入遊戲就載入好所有的資源,然後只進行隱藏和顯示,那樣玩家會的流暢無比。(ps:當然要加一些動畫,來緩解疲勞=、= 比如加個1秒的載入介面~)

然而,事實上除了休想遊戲,那個遊戲沒有載入介面呢? 好了,扯遠了。

其實,已經很明顯了,登入階段,進入遊戲後(進入主介面之前),所有的資源都應該刪掉。

再就是主介面和戰鬥介面切換的時候也應該釋放掉自己的那部分資源。

mainscene

:init()

mainscene

:onenter()--在這載入

mainscene

:onexit()--在這釋放

mainscene

:delete()

然後來回切換場景的時候並不釋放(登入場景是否),也就是init()會呼叫一次,delete()一般不會呼叫,

除非重新初始化整個場景,比如切換使用者,清一下資料。

不過這裡的step和scene的做法實質上沒什麼區別,都是為了更加方便的掌控流程或者邏輯。

空口無憑,現舉個例子,理解一下:

loginscene.onenter( loginstep.login ) //就走 登入-選角色-進遊戲 流程

loginscene.onenter( loginstep.selectrole ) //就跳過登入的流程,比如返回角色

首先呢,從簡單出發,scenestep 控制場景中的不同切入點。這樣的話,他可以是個列舉。

這種情況後者不夠明了?展開一下:

function loginscene:onenter(step)

if step then

gotostep(step)

end//...

end//介面登入

function loginview:login()

//...

gotostep(loginstep.selectrole)

end

簡單情況下,這樣就可以用step來通過列舉做一些,

if step == loginstep.selectrole

then

loginscene

:enterloginstep()

loginscene

:levelselectrolestep()

end

之類的處理,到這裡本章就結束了…………………………………………………………嗎?當然沒有!太大材小用了!!!

step是抽象為乙個類,具有自己的onenter、onexit、init、delete 的方法!

這樣就可以:

local laststep = nil

function

gotostep(newstep, isdeletelast)

if laststep then

laststep:onexit()

if isdeletelast then

laststep:delete()

endend

laststep = newstep

newstep:onenter()

//...

end//當然亦可以用類似指標陣列的方法

newstepobj = self.steparr[newstep]

if newstep == nil then

newstepobj = self.stepcreatefuncarr[newstep]()

self.steparr[newstep] = newstepobj

end

這樣step就具備了,處理更複雜問題的能力,也就是拓展性,比如:

進入遊戲讓玩家體驗下「極品裝備,一秒刷爆」的快感,就可以用乙個gamescene.newbie來完成,

(ps:科普newbie =/= 牛b, 是新手的意思 =。=)

因為這可能是70級後東西,而一級的玩家要這些資源何用(假設單機的話),

這時候在onexit中解除安裝掉,就再合適不過了。而你需要做的仍然是gotostep(***x)。

這種思想還可以適用於更多的地方,把複雜的東西模組話,當有了套路之後,

思路就會清晰明了,而**也向著精簡的方向前進。

本文到這裡就結束了…………………………………………………….真的!

see again~

之前 真愛無價,歡迎打賞~

步兵 shader 基礎篇

引用上文連線中的圖,渲染是乙個線性流程,他是在不停各個環節處理接收到的資料,然後輸出。首先建立一堆頂點資料,然後頂點著色器對處理這些資料,輸出給圖元裝配器連線成圖形,然後在輸出給幾何著色器可對圖形進行處理,再光柵化成畫素模式,輸出給片段著色器 計算每乙個畫素的最終顏色,最後混合疊加輸出到到螢幕上。值...

步兵 shader 封裝篇

上篇介紹了基礎,這篇先介紹下shadertools的封裝,為以後打好基礎。注 這篇文章是基於cocos2dx的 文中有不懂的地方可去回顧上篇 步兵 shader 基礎篇 首先介紹幾個類 glprogram shaderprogram glprogramcache 可以存放已經鏈結過的shaderpr...

nginx介紹(四) 經驗篇

5.經驗學習 當igor sysoev開始編寫nginx的時候,構建網際網路的大多數軟體已經存在,這些軟體的體系結構通常 遵循 舊式伺服器的定義 網路硬體 作業系統以及老 網際網路架構。然而,這並沒有阻止 igor 思考他或許能夠在 web伺服器領域做一 些改善性的工作。因此,第一課似乎很明顯 改進...