2016年9月14日 星期三

遊戲企劃文本處理技巧

有時候基表內有許多文本,可能需要批次處理。

有時候這些問題並不需要特別寫程式來解決。

就像檔案內的特定文字需要置換,用notepad++的全部取代就可以解決。



這次要介紹的幾個常會用到檔案處理需求,並且會分別介紹mac與win 10下的處理方式


1.獲得資料夾內檔案名稱。


mac

圈選多個你所需要的檔案,command+c,再去你需要的地方貼上即可

win 10

開啓Powershell移動到你所需的資料夾。

dir /b /on >list.txt
接下來那個資料夾中就會出現list.txt這個檔案,開啟他,裡面有你所需的全部檔案名稱


2.批次改檔名,或置換其中名稱。


mac

mac有內建autoMator,非常簡單,基本上可以做到檔案管理的許多事情。

win 10

批次改檔名可以直接選擇後重新命名。

如果你想要修改其中名字,開啓Powershell移動到你所需的資料夾。


Dir | Rename-Item -NewName { $_.name –replace "搜尋的字", "取代的字" }

3.文字檔案搜尋


win 10有 notepad++而Mac有Sublime Text,都俱有資料夾內搜尋的功能。
如果遇到比較困難的狀態。

例如:在這個資料夾中有我人物在遊戲內所講的台詞,因為介面修改使得文字顯示的內容變少了,該怎麼辦?又或者我想知道對話文本裡面最長的一句話?

這時候你可以利用正則表達式

你不需要真的非常精通他,只要知道如何完成你的目標即可。
以上為例,我想知道文本中的人物台詞的字數最多是多少?

打開NotePad++使用搜尋。


"[^x00-xff]{10,}"
因為我的文本中人物的台詞都是以「"台詞"」這樣的形式出現,因此我要找的是以「"」開頭和結尾,中間都是中文。
x00-xff其實是涵蓋了雙節字符,包含了日文與標點符號,{10,}則代表10個以上。
這個意思是說,我想搜尋「以"開頭,然後串接著10以上落在x00-xff編碼內的符號,至少10個以上,然後以"結尾」。

這細部技巧可以再去研究,不過這個正則表達式在我最近的工作上幫了很大的忙!

2016年9月11日 星期日

Unity 點選及拖曳2D物件(click and drag 2D game object)

為了要實作在2D環境下點擊及拖曳物件的功能,
但是網路上分享的片段沒有完全符合我的需求,
所以寫了一份自己的版本。
主要分為2個部份
1如何判斷點擊到物件
2在按住的時間內,讓物件跟著滑鼠移動

1
在判斷點擊的方法和3D空間的作法類似,
先求出滑鼠在空間上點擊的位置,
再由此位置取得世界坐標系上,
因為2d 座標要轉3d座標會缺少一個維度資訊,
所以要需要另外再給定一個z值。

再用ray cast判定是否有撞到物體,
當滑鼠點擊時,開始判斷ray是否有打到物件,
為了加速ray cast的效率,
我們可以為物件分層(layer),這邊是放在Unity的Layer 8。



2
最後在Drag的函式內完成每次更新都會再檢查物體位置,
如果滑鼠不再按著時,即離開函式。


Demo:

source code

PS:
1.在chrome,Vivaldi無法直接由檔案檢視結果
2.放到google drive 分享的方法。https://www.youtube.com/watch?v=c431DEshk4U
3.webGL分享同上。只是build時改成選webGL.