2012年8月15日 星期三

人生如遊戲,遊戲如人生。

遊戲在設計的時候都會設置短期、中期、長期任務還有最終目標,而玩家為了完成這些任務及邁向最終目標會作出各種努力以期完成任務,如升級、學習及提升技能、尋找隊友幫助、強化工具與裝備等等。

當玩家作出的努力得到回報時(完成任務),玩家的心情會是雀躍萬分甚至心裡會想說“如果這輩子再也玩不到這麼棒的任務該怎麼辦”,好吧...這麼棒的任務確實比較難設計,但這就是玩家想要的。

其實把遊戲中的規則玩法套用在生活中時間很棒的事情,現實生活中也需要各種任務跟最終目標的存在。比如說:這個月要減重3公斤,就必須透過少吃、運動、吃藥(不良示範)、抽脂(?)來達成這個任務。

人類是很容易失去動力的生物,當你茫茫然不知道自己能做什麼、該做什麼時就更需要定個短期任務讓自己有個目標前進。除了短期任務外也需要定個中長期任務,如:我想做遊戲,這個任務的子任務可能就是學習寫程式、學習畫2D3D、學習寫遊戲企劃、得到不做遊戲就會死的病(?)等等。

當然...這跟遊戲一樣,最難的是設計一個剛好的任務,不至於太簡單一點成就都沒有,也不能太難要擁有100台名車(好吧,我知道有些人可以),最好就是設置有可能完成但是需要經過一番努力的任務,相信完成的時候心情是難以言喻的。

讓我們大家為了讓自己的人生過得更棒而對自己設定任務吧!

2012年8月14日 星期二

UNITY3D - JavaScript "in" 的妙用

前言:這裏指的Javascript是指Unity所用的,而非一般所用的Javascript,一般所用的Javascript無法使用in來當Contains使用。

C# 的ArrayList有Contains函式可以用來檢查元素是否存在於這個Array裡,但是JavaScript裡的Array就沒有Contains函式可以使用,難道只能用迴圈來檢查了嗎?
不!JavaScript有提供很棒的"in"關鍵字供我們使用,這關鍵字不但容易讓人理解而且功能強大,如:

var arr : int[] = [1, 2, 3, 4, 5];
for(var i : int in arr)
{
    Debug.Log(i); //1 2 3 4 5
}

像C#的foreach用法


var arr : Array = new Array(1, 2, 3, 4, 5);
if(3 in arr)
{
    Debug.Log(true);
}
else
{
    Debug.Log(false);
}

我們想要的Contains功能


var arr : int[] = [1, 2, 3, 4, 5];

if(3 in arr)
{
    Debug.Log(true);
}
else
{
    Debug.Log(false);
}

更棒的是BuildInArray也適用這個做法,C#的話似乎就必須用迴圈去找了。


if (foo == "bar" || foo == "foobar" || foo == "foo" )
{
 //...
}
// can be written as
if (foo in ["bar", "foobar", "foo"])
{
 //...
}

超棒的是不用再寫一堆||了,不但易讀易懂更易寫。

還有甚麼更好的應用就等大家分享了。