[ 新功能 ] 如何寫字在 Prims 上面
2010/03/25 17:26
瀏覽1,193
迴響0
推薦1
引用0
在過去,Second Life 並不支援太多有關於 2D 效果,寫字就是一個例子。你如果想要在一個箱子上標示訊息,就只有兩種方法,一個是透過 photoshop 等繪圖軟體作圖,然後再上傳成為材質;另一個方式,就是利用 Script(指令是 llSetText),寫一段浮動文字訊息在物件上面。
這兩種方式都有缺點,前者必須要會作圖,然後再花錢上傳,耗時費工又花錢;後者雖然好一點,有字數限制(254 bytes),且只能出現在物件上方,如果將一堆有標明文字訊息的東西放在一起,就會形成混亂,不易辨讀(*註一)。
過去使用 Script 的作法
在物件裡寫一個新的 Script,讓它在物件上方顯示一段浮動的文字訊息,只要利用 llSettext 這個指令就可以達到。它只有三個參數,相當簡單。即你要顯示的文字訊息字串、顏色、透明度。如果在字串中要換行的話,只要在要換行處,插入 \n 就可以。
當然,除了參數所提供的顏色及透明度讓你可以產生變化外,你並不能變更字體大小及相對應位置(因為每一行都是置中處理)。
更多該指令的說明,請參閱官網 Wiki 的說明。
利用新版 Viewer 所帶來的功能
今天看到官方部落格有提到,使用 2.0 版本的 SharedMedia 來產生其他應用。就有人想到應用方式。因為既然使用 SharedMedia 都可以顯示網頁,透過 URI 方式更可以內嵌圖片及程式等效果,那麼只是要單純顯示文字,理論上不是問題。透過這段指令,就可以在 Prims 的第四個材質面上,顯示出 Hello World! 的字樣。然後,自然我就會很想知道能不能顯示中文,結果將字串以中文字取代後,呈現以下的狀況:
天呀,中文變成亂碼。
試過幾個方法,後來想到如果指定編碼或許可以解決。修改過的如下所示:
為了讓大家方便對照查看,所以我將效果與 Script 並列。後者是在字串中加入「<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />」這段文字。只是要注意,當你貼到 Script 中,要將雙引號改為單引號,否則會出現編譯錯誤。
----
註一:
利用 llSetText 來撰寫,還有一個問題。就是如果將 Script 由物件中移除,原本 script 所產生的效果並不會因此消失,這一點和使用粒子特效(Particle)是一樣的。
這兩種方式都有缺點,前者必須要會作圖,然後再花錢上傳,耗時費工又花錢;後者雖然好一點,有字數限制(254 bytes),且只能出現在物件上方,如果將一堆有標明文字訊息的東西放在一起,就會形成混亂,不易辨讀(*註一)。
過去使用 Script 的作法
llSetText("Hello", <0.0, 1.0, 0.0>, 1.0)
在物件裡寫一個新的 Script,讓它在物件上方顯示一段浮動的文字訊息,只要利用 llSettext 這個指令就可以達到。它只有三個參數,相當簡單。即你要顯示的文字訊息字串、顏色、透明度。如果在字串中要換行的話,只要在要換行處,插入 \n 就可以。
當然,除了參數所提供的顏色及透明度讓你可以產生變化外,你並不能變更字體大小及相對應位置(因為每一行都是置中處理)。
更多該指令的說明,請參閱官網 Wiki 的說明。
利用新版 Viewer 所帶來的功能
default {
state_entry(){
integer face = 4;
string message = "<i>Hello</i><h2>World!</h2>";
llSetPrimMediaParams(face,[PRIM_MEDIA_CURRENT_URL, "data:text/html," + message]);
}
} 今天看到官方部落格有提到,使用 2.0 版本的 SharedMedia 來產生其他應用。就有人想到應用方式。因為既然使用 SharedMedia 都可以顯示網頁,透過 URI 方式更可以內嵌圖片及程式等效果,那麼只是要單純顯示文字,理論上不是問題。透過這段指令,就可以在 Prims 的第四個材質面上,顯示出 Hello World! 的字樣。然後,自然我就會很想知道能不能顯示中文,結果將字串以中文字取代後,呈現以下的狀況:

天呀,中文變成亂碼。
試過幾個方法,後來想到如果指定編碼或許可以解決。修改過的如下所示:

為了讓大家方便對照查看,所以我將效果與 Script 並列。後者是在字串中加入「<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />」這段文字。只是要注意,當你貼到 Script 中,要將雙引號改為單引號,否則會出現編譯錯誤。
----
註一:
利用 llSetText 來撰寫,還有一個問題。就是如果將 Script 由物件中移除,原本 script 所產生的效果並不會因此消失,這一點和使用粒子特效(Particle)是一樣的。
你可能會有興趣的文章:
限會員,要發表迴響,請先登入



