「新手引導框架」升級,支持自動掛機等更多玩法!

01

將新手引導框架開源之後,陸續收到不少夥伴們的反饋,其中有一個問題是“引導腳本的自動執行,只能在瀏覽器上運行,感覺有些雞肋”。

從最開始 Shawn 也一直在思考如何實現在原生環境上的屏幕點擊模擬,之前的思路是分別在 iOS\Android 上分別實現一套原生的 JSB 接口,調用系統的能力來模擬真實的屏幕觸摸,不過要讓大家使用起來需要折騰 JSB\c++,相當於SDK接入,太過於複雜。

在與脫貧實驗中的夥伴們幾次交流討論,大家給出了不同的方案,其中有「黝黑蝸牛」的方案給了我很大的啓發,下面是解決原生上實現自動節點點擊的討論過程。

640?wx_fmt=png

黝黑蝸牛」提出新的思路,使用cc.Button組件發送點擊事件來模擬。

640?wx_fmt=png

但是非按鈕節點怎麼辦呢?動態創建用完再刪除...還有更好的方法嗎?

640?wx_fmt=png

調試 Cocos Creator 的源碼,找到事件派發的根源上,需要一個event事件對象。

640?wx_fmt=png

再向上追蹤源碼,定位到handleTouchesEnd函數,touches參數是點擊的座標,比較好創建。

640?wx_fmt=png

調用引擎接口handleTouchesBegin\handleTouchesEnd在Mac模擬器上自動執行成功!

640?wx_fmt=png

微信小遊戲環境也成功了640

下面是模擬點擊的核心代碼:

function touchSimulation(x, y) {	
    //獲取屏幕矩形大小	
    let rect;	
    let inputManager = _cc.inputManager;	
    if (cc.sys.isBrowser) {	
        let canvas = document.getElementById("GameCanvas");	
        rect = inputManager.getHTMLElementPosition(canvas);	
    } else {	
        rect = cc.view.getFrameSize();	
        rect.left = 0;	
        rect.top = 0;	
    }	
    //將x,y從Creator世界座標轉換到設備窗口座標	
    let vp = cc.view.getViewportRect();	
    let sx = cc.view.getScaleX();	
    let sy = cc.view.getScaleY();	
    let ratio = cc.view.getDevicePixelRatio();	
    let htmlx = (x * sx  + vp.x) / ratio + rect.left;	
    let htmly = rect.top + rect.height - (y * sy + vp.y) / ratio;	
    let pt = cc.v2(htmlx, htmly);	
    //模擬點擊操作	
    cc.log(`模擬點擊座標:${pt.x}, ${pt.y}`);	
    let touch = inputManager.getTouchByXY(pt.x, pt.y, rect);	
    inputManager.handleTouchesBegin([touch]);	
    setTimeout(() => {	
        inputManager.handleTouchesEnd([touch]);    	
    }, 200);	
}
02 

折騰這麼多,新手引導自動執行到底有什麼價值呢?

看過Shawn的GitChat文章想必你知道,新手引執行可以實現自動化測試,引導腳本就是自動化測試腳本。

Shawn早在Cocos2d-js時使用過Cocos官方開發的Cocos2d-js devtool工具,看下圖:

640?wx_fmt=jpeg

它是直接將一段 JS 代碼嵌入已經運行的 Cocos2d-js 遊戲中,如果將新手引導的自動執行能力動態嵌入一個 CocosCreator H5 遊戲那將會是什麼呢?—— 外掛

新手引導框架本身不依賴於具體遊戲的代碼邏輯,重點只關心場景樹結構、關鍵節點名字,要實現一個外掛的可行性非常高。

一講到外掛估計大家都覺得有點黑暗,那我們換一個正面的思路,實現一個“內掛”,就是在遊戲內部的掛機自動執行。

想信大多數人都見過很多無腦的,自動打怪、自動做任務的傳奇類掛機遊戲... 使用引導自動執行的能力 + 操作錄像功,將極大的降低掛機類遊戲發成本,開發人員節省時間

03

新手引導框架正式遷移到GitHub地址:

       https://github.com/ShawnZhang2015/GodGuide

「Creator星球遊戲開發社區」從最早的「奎特爾星球」改名來,Shawn的願景一直都沒有改變:“幫助初學者快速入門,助力企業降低研發成本,讓遊戲成爲教育的最強武器!

明天是教師節,Shawn特地爲教師節準備了一份自己的禮物:

小遊戲、大能量,願我們在前進的道路上砥礪前行,共同成長!歡迎夥伴們加我微信:z6346289。

640?wx_fmt=jpeg

640? 
640?wx_fmt=png 

Creator星球遊戲開發社區

長按二維碼,關注我們!

640?wx_fmt=gif
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章