iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
自我挑戰組

透過Roblox Studio學習Lua語言與基本程式邏輯系列 第 2

Day 2: 常用功能與語法簡介

  • 分享至 

  • xImage
  •  

昨天寫完後我突然想到,我好像忘記講怎麼改語言了,所以在今天開始之前先來個小小的教學。


0. 更改介面語言

點擊左上角"檔案" -> "Studio設定"或直接點快捷鍵ALT + S
https://ithelp.ithome.com.tw/upload/images/20250813/20169664KuAfVNR9n6.png

接著往下滑,找到"General"標籤,把"Langauge"選項改為中文 (或者你也可以改成擬轟溝)
https://ithelp.ithome.com.tw/upload/images/20250813/20169664pNWJoDxFqS.png

沒意外Studio會叫你重新啟動 (不要問為什麼這張是中文,我忘記調語言了)
https://ithelp.ithome.com.tw/upload/images/20250813/20169664xM4lfVZVDX.png

重新啟動後介面就變中文了。
(介面變成中文後設定什麼的應該也不會太難懂了)


好的教學完畢現在正式開始

1. 3D物件常用屬性介紹

看完昨天講解"屬性"這個頁面後,大家應該可以了解到這是一個非常強大的功能頁面,現在我要介紹一些我們在編輯3D物件時很常用的屬性。
註1:以下所有的變數類型皆為在腳本內所顯示的類型
註2:你不用把這邊全部看完也沒關係

BrickColor

變數類型: BrickColor
是否可透過腳本編輯:
這項屬性可以透過在蜂巢狀的網格內選取顏色來改變物件的顏色

CastShadow

變數類型: boolean
是否可透過腳本編輯:
這項屬性可以決定該物件是否有影子 (有影毋影~)

Color

變數類型: Color3
是否可透過腳本編輯:
這項屬性可以透過給予RGB數值來改變物件的顏色

Material

變數類型: Enum.Material
是否可透過腳本編輯:
這項屬性可以改變物件的材質 (昨天也有稍微提到)

MaterialVariant

變數類型: string
是否可透過腳本編輯:
這項屬性可以改變物件的默認材質,當給予這項屬性指定的字串並且系統在"MaterialService"有找到指定的材質,則此項自訂材質就會覆蓋掉物件的默認材質 (總之就是可以讓你自訂材質的屬性)

Refelctance

變數類型: float
是否可透過腳本編輯:
這項屬性可以改變物件的反射程度,某些指定的材質會覆蓋掉這項屬性

Transparency

變數類型: float
是否可透過腳本編輯:
這項屬性可以改變物件的透明程度,數值越小越不透明

Size

變數類型: Vector3
是否可透過腳本編輯:
這項屬性可以改變物件的大小

CFrame

變數類型: CFrame
是否可透過腳本編輯:
這項屬性可以改變物件的方位,其中包含了兩項子屬性,分別為"Position"與"Orientation","Position"可改變物件的位置,"Orientation"可改變物件的旋轉角度,兩者的變數類型皆為Vector3

Origin

變數類型: CFrame
是否可透過腳本編輯:
這項屬性顯示物件的位置與旋轉角度的三軸所相交的點 (顯示就意味著你不能透過腳本調整他)

PivotOffset

變數類型: vector3
是否可透過腳本編輯:
這項屬性可以改變物件的中心點位置 (編輯此物件的位置時的中心點的位置)

CanCollide

變數類型: Boolean
是否可透過腳本編輯:
這項屬性決定了該物件是否可碰撞 (你能不能碰到他)

CanTouch

變數類型: Boolean
是否可透過腳本編輯:
這項屬性決定了該物件是否可以被觸碰 (你碰了他他會不會有反應)
這兩項屬性很容易搞混,CanCollide是你是否能夠在物理世界裡真實的碰到物件,CanTouch是你在腳本裡使用了觸碰到物件的相關事件是否會有反應

Anchored

變數類型: boolean
是否可透過腳本編輯:
這項屬性決定了該物件是否固定 (假設你放了一個物件在空中,你沒固定他就會掉下來,你固定他他就會浮在那邊)

Shape

變數類型: Enum.PartType
是否可透過腳本編輯:
這項屬性可以改變該物件的外觀形狀 (部分BasePart不適用這項屬性)

有一些屬性這裡還沒提到,其他的會在後續的單元陸續介紹。


2. 各項服務介紹

接下來看到總管頁面,在這個頁面中你可以看到有很多不同的物件,而其中這些最重要的就是各項的"服務",接下來介紹所有的服務

Workspace

這個服務為這個遊戲的主世界,所有玩家可以觸及的物件都會放在這邊

Players

這個服務包含了所有目前在此伺服器的玩家

Lighting

這個服務包含了遊戲內的所有光影要素以及天空箱

MaterialService

這個服務包含了所有在此遊戲內的材質,包含默認材質與自訂材質

NetworkClient

這個服務處理伺服器端與客戶端的資料傳遞

ReplicatedFirst

這個服務儲存了遊戲預先載入的資源

ReplicatedStorage

這個服務儲存了伺服器端與客戶端皆可查找與編輯的項目

ServerScriptService

這個服務可用來執行伺服器端的腳本

ServerStorage

這個服務可儲存在伺服器端的資源

StarterGui

這個服務儲存了玩家的使用者介面 (初次進入遊戲時載入)

StarterPack

這個服務儲存了玩家背包內的道具 (初次進入遊戲時載入)

StarterPlayer

這個服務儲存了玩家剛進入遊戲時的各項資料,可編輯的子服務為"StarterCharacterScripts"和"StarterPlayerScripts",其儲存了要放入玩家角色內的腳本與要放入玩家本身在Players服務裡的腳本

Teams

這個服務可以讓你跟其他玩家開會這個服務儲存此遊戲中的所有隊伍

SoundService

這個服務包含了所有在此遊戲的音訊相關資訊

TextChatService

這個服務掌管遊戲中的聊天室,有各項設定可供編輯


3. 語法簡介

哩哩摳摳的東西終於講完了,現在來講基本語法。

首先,Roblox Studio所使用的語言為基於Lua語言所進行更改的Luau,更改的內容多半是新增了許多與遊戲有相關的函式 (例如上述的服務),所以如果你沒有學過Lua也沒有關係,因為Luau不太需要非常多的Lua知識。(還有就是我本身Lua也沒學得多好XD)

在原生Lua語言中,如果你要定義一個變數,那就跟Python一樣,直接寫出變數名稱然後賦值,但在Luau中,由於每個腳本都是獨立的函式,所以在定義變數的時候前面要多加一個local,像這樣:

local Value = 1

而在變數裡,我們可以放入各種不同資料型態的資料,例如整數(int)、浮點數(float)、布林值(boolean)、字串(string)、字元(character)、陣列(table)、字典(dictionary)、函式(function)、路徑(path)、Enum屬性(Enum)

如果你以前有接觸過程式語言,那你可以直接跳過這個章節(當然我還是希望你看一下啦),如果你以前沒有寫過任何程式,那我非常建議你往下把這章節全部看完。

所謂的資料型態,初步的分類的話可以得到兩個類組,數字以及文字,再往下細分就是整數、有小數點的浮點數、字元、字串,而整數就是數學上的整數,浮點數則是含有小數點的數字字元簡單來說就是一個字,然後字串就是一串字

值得一提的是,在其他的程式語言中,陣列應該叫做Array,但在Lua中陣列的名稱是table,對我來說這是一個能讓我更好理解陣列運作原理的方式,首先,如果我們用table這個詞來理解陣列的原理,table這個單字的意思就是"桌子",那桌子就是拿來放東西的 (各種資料),而如果我們要放更多的東西,那就得把"桌子"變成"櫃子",這也就是多維陣列的原理 (請原諒我可能在表達上有些不清楚的部分,但我就是透過的方式來學習的)

而在每個程式中,我們最常用的函式絕對是"輸出",在Luau中輸出有很多不同的方式,以下方程式碼舉例:

print("這個是普通的輸出")
warn("這個是警告的輸出,字會變成黃色")
error("這個是錯誤的輸出,字會變成紅色")

在Studio中,如果你想看到像上面的指令碼輸出,可以到上方標籤列的"指令碼"來打開"輸出"頁面


明天將會講到函式的用法與事件的概念

鐵人賽好累


上一篇
Day 1: 基本環境建置與Studio使用方法
下一篇
Day 3: 函式與事件
系列文
透過Roblox Studio學習Lua語言與基本程式邏輯21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言