190810 【NoR2252】DevLog:開發日誌 第二彈

開發日誌 第二彈

垃圾話時間

我目前推的歌好像還沒有推過乃木坂或是日向坂
原本有打算要推
但是沒有辦法剛好跳出來的就是這一首

這一首是專輯曲目所以可能也比較少人聽
表現的氣氛也不像欅坂一如既往如此濃烈
不過我覺得他是一首很有毒性的歌
所以其實也很常聽

這邊是第二彈
有些東西我就用複製的 重複很正常
下面就附上幾張截圖跟畫面

主選單畫面
選取畫面
設定畫面
暫停畫面
結算畫面

LeanTouch的坑

其實這個小標下的不好
這其實是我自己做死搞出來的

靜態事件訂閱

首先就是遊戲裡大部分的觸控我都使用LeanTouch解決
不過有些畫面只需要UI點擊 用LeanTouch就險的有點多餘
也有的場景是兩者需要並存的

官方文件其實有寫 對於他的靜態事件的註冊範例啦

我一開始其實有瞄到
不過我並沒有像它一樣在OnEnable的階段註冊
而是在Awake裡面註冊
然後做的時候也都可以用
所以沒有注意到
等到換場景才又突然遊戲閃退
自己也不知道為什麼

原來就是犯了一個大忌
我忘記有借有還
官方的範例有在OnDisable裡面解除訂閱他的靜態事件

我就是犯了這個錯
所以這是我自己的問題
不過接下來這個就不是我的問題了吧

謎樣的手指

首先就是在主畫面
你只要點擊一下就會切斷到選曲的畫面
所以這個部份我是在Tap裡面處理

不過當我在遊戲裡從別的畫面切換到主畫面
總會失敗

後來經過一番調查發現他不是沒有切到主畫面
而是一切到就換到下一個場景

但我明明沒有點擊螢幕
所以又在看了一下Tap事件是否有莫名被呼叫

然後又用了Boolean啊什麼的想要解決這個問題
中間一堆很白痴的作法就不說

直接講結論

    void EnableTouch ( ) {
        LeanTouch.Fingers.Clear ( );
        touch.enabled = true;
    }

在你開始使用Leantouch前最好把 他的Finger先Clear一下

因為我一開始嘗試先把它Disable 晚點在Enable也沒有用
後來就是補上Clear他的fingers就好了
這個 感覺是個蠻合理但又很彆扭的Bug

因為我確實在前一個場景有做螢幕的點擊動作
所以它紀錄下我的手指這很正常
不過 都已經離開螢幕了卻沒有被消掉
這或許跟場景轉換有關係

但還有待驗證就是了


各種解析度的自適應

在我的開發環境中
可以拿來測試用的機器有三台
而這三台的螢幕比例跟解析度都剛好不同

分別是

  • 21:9 2520*1080
  • 16:9 1920*1080
  • 8:5 1280*800

先不論解析度 這三台本身從比例上就不一樣了
所以就惡補了一下有關Unity對於不同比例上的設定
這邊是最後的結果
這都是從實機上截圖下來的

21:9
16:9
8:5

桃子真可愛:)

這裡的話
我基本上就是看這兩篇文章就大概可以做出來了

成為 UGUI 的排版大師 – 一次精通 RectTransform | Fourdesire Blog

Unity UGUI 原理篇(三):RectTransform | ARKAI Studio

還有就是Canvas上有些設定要記得設定
印象中預設值是Constant pixel

不過如果真的要講GUI真的比較適合另開一篇文
這裡就先略過了


開發 開發工具

這個標題真饒口
不過這個其實跟譜面創作系統上多少有關系
由於開發中其實有很多很乏味又很沒有意義的動作

譬如說 在我將讀取譜面的機制修改成AssetBundle的時候
如果我今天作為一個譜面創作者
我只是修改一個音符就要經歷非常的多的步驟

  1. 在Unity Editor中 將Aegisub的值轉成譜面
  2. 再將譜面Import進Asset
  3. 打包成AssetBundl
  4. 將Bundle放到指定位置

光是修改一個音符
卻要這麼多步驟才能做驗證
這樣超級浪費時間

所以後面也稍微修改一下流程
主要是將第三步跟第四步省略

順便連從主畫面進入選曲這些步驟都省略

主要就是寫一份Script可以快速設定要測試的譜面

#if (UNITY_EDITOR) 
    [SerializeField] bool IsTest = false;
    [SerializeField] TextAsset sheet;
    [SerializeField] Texture2D tex;
    private void Start ( ) {
        if (IsTest) {
            NoR2252Application.Option = new Option ( );
            GameSheet s = SourceLoader.LoadSheet (sheet, tex);
            NoR2252Application.CurrentSheet = s;
        }
    }
#endif

這樣寫的好處就是 你要測試的時候只要掛上這一份Script並打勾IsTest就可以直接測試

然後為了測試各種功能我也寫了很多可以在UnityEditor就能執行的程式 來幫我測試功能是否正常

其實開發這一類的工具
真的能夠節省很多時間
所以如果對於某些流程感到很受不了
我覺得開發一些補助工具也是不錯的選擇


今天就先打到這裡好了
打太多下次就沒有得打了~~

突然 出会った そのサプライズに
少しだけ 理性失ったのかな
少女に戻ったように
この胸キュンと でも純愛はもう 無理

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s