Script程式檔(Pythion 語言)系列教學─基本內容介紹

適用版本:trueSpace4以上

發表日期:1999/5/5


trueSpace4.0提供了十分強大Script(程式檔)Python語言─的功能,您可以直接使用的 Python 語言及內建的編輯器,就能夠自訂動畫及模型效果,您只要在 trueSpace4 內部中編寫簡短的程式,就可以製作出互動應用程式或遊戲軟體的模型。程式檔 (Scripts) 可以直接取得相同的內部函數就像外掛程式般方便,所以您不需要購買編譯軟體或學習C語言,就可以加入 trueSpace 的功能。

您或許會問Python是不是一種新語言,可以說是也可以說不是,嚴格說起來應該算是C語言的一種「方言」(是指一種新語言由其他語言衍生而來,其語法、指令與原先語言類似),與VB觀念很像,有關Python語言的詳細資訊請到python語言。

在使用Python語言前要先看下面的資訊:

內建訊息處理程式:

內建訊息處理程式,我們可視為一個「副程式」,在不同狀況會由不同內建訊息處理常式處理。

ontimestarted:時間開始;只執行一次,除非我們利用程式跳到該常式。

ontimechanged:偵測時間是否改變。該常式會不停執行,形同為一迴路,直到使用者中斷或在該常式中加一些判斷來終止。

ontimestopped:時間停止;只執行一次,除非我們利用程式跳到該常式。請注意該常式只是一個副程式而已,執行該常式不會讓程式停止,而是程式停止前最後執行的一個常式。

onmousemove(x,y):是否移動了滑鼠指標。

onobjectselected:是否按下滑鼠且選了新物件,只有該物件接受本訊息。

ondestroyobj:當物件失去選擇作用狀態。

onmouseclick:是否按下滑鼠且沒有選取新物件,所有物件均會接收本訊息。

onselectionchanged:是否有選取新物件,所有物件均會接收本訊息。

 

內建變數:

trueSpace有內建三個物件變數,透過他們便能夠存取不同物件的函數與屬性。

me:用於trueSpace物件本身,來替代物件名稱。

me.Translate(.1,0,0)

me.Draw()

如果沒有做其他變更物件名稱前題下,下面寫法執行會有錯誤

Cube.Translate(.1,0,0)

Cube.Draw()

必需先宣告物件名稱,我們才可以取用,下列寫法是正確的

Cube=doc.Object(“Cube”)

Cube.Translate(.1,0,0)

Cube.Draw()

doc:用於整體物件,其屬性和me幾乎相同,但影響層面涉及全部物件,所以doc屬性和函數我們寫在任何物件下都可以,但方便閱讀起見大都放在「場景」物件中。

me.Draw()只將該物件重繪一次

doc.Draw()會將所有物件重繪一次

trueSpace:主要控制與物件無關的動作,譬如SaveScene(“name”)儲存場景、LoadScene(“name”)載入場景、Stop()程式結束、…,用法沒有嚴格限制,可放在任何物件下。

trueSpace.Stop()  程式停止

變數宣告

Python沒有什麼變數宣告,直接使用就可以,但該變數只能在某一個物件下的某一個常式下使用,如果要該物件下所有常式都可以使用,前面要加一”global”將該變數宣告為全域使用。

global:將某一變數宣告成全域變數,至於是什麼型別(Type)變數,Python會自動判斷。

撰寫時應注意的事:

指令大小寫有差別

有些程式語言對於指令大小寫並無嚴格限制,但Python確有大小寫上的差異,所以我們在編寫程式時,就必須時常作鍵盤上大小切換動作。

正確:me.Translate(0.1,0,0)

錯誤:me.translate(0.1,1,1)”t”應該要改成大寫”T”才正確

 

縮排

在寫程式撰寫時一定要縮排,如果沒有縮排則無法執行動作。

對於程式中的縮排要特別小心,您可以使用「Space」鍵或「Tab」鍵來進行縮排。在同一個程式中不可將「Space」鍵或「Tab」鍵混合用,也就說不可以第二行使用「Space」鍵,而第三行使用「Tab」鍵;另外,「Space」鍵的數目要統一,也就說不可以第二行空二格,而第三行則空一格,這樣也無法執行動作,所以當您決定何種縮排方式,請繼續按照此原則下去。