朱峰社區(qū)首頁 朱峰社區(qū)

搜索資源 注冊|登陸

等待

返回 展開菜單

UDK補充性腳本

Houdini基礎 觀看預覽

Houdini基礎

包含36節(jié)視頻教程
關注28.8萬

(本教程houdini技術已老請購買之后houdini更新課程)Houdini是一款功能強大的3D合成軟件,曾經效力于300部以上經典電影的特效制作,比如煙火,水等復雜的后期合成都少不了它。

關閉

補充性腳本
創(chuàng)建自定義Kismet循序對象

關卡設計師時而會遇到這種尷尬情況:您想運用Kismet進行一些工作,但目標卻超出了默認的節(jié)點設置能力范圍。此時,若您知道怎樣編寫循序對象來實現各種功能,就變得有用了。所幸在UnrealScript中,這一步驟變得易如反掌。誠然,本書的目的不注重于使用Unreal的編碼功能,但是考慮到此話題十分有用,我們決定先為您舉一個簡單的例子來啟發(fā)一下。

若您覺得此篇指南頗有價值,而且也愿意投入時間來拓展自己的編程技能,您就會發(fā)現,開發(fā)自己的Kismet節(jié)點可以大有成就。

在這個簡單示例中,我們要創(chuàng)建一個數學節(jié)點對兩個浮點變量進行加、減、乘、除的運算。本指南會將創(chuàng)建工作分解為包含腳本各個方面的幾個步驟,每一節(jié)中創(chuàng)建的腳本都帶有描述文字,說明此節(jié)腳本的功用。

然而,正如上文所述,本書的目的并不在于使您成為一個腳本編寫專家。即使從未進行過編程工作,您還是可以跟上本指南進度的。不過在對編程常識一無所知的情況下,確實會無法完全掌握本篇指南所傳授的技巧。

指南A.1——創(chuàng)建自定義Kismet循序對象,第一部分:
初始腳本組件

注意:為順利完成本指南的工作,您需要一個文本編輯程序,比如Windows自帶的記事本(Notepad)或者ConTEXT。

1.首先,請打開文本編輯程序。

2. 鍵入下列文本:

class SeqAct_MathOperations extends SequenceAction;

語句的第一行為循序對象創(chuàng)建了新的類(Class)。這個類應命名為SeqAct_MathOperations它來自于Kismet循序對象主要的類——SequenceAction類。切記在句末加上分號。切記切記!

3.為了便于閱讀在此新添一行然后鍵入下列文本:

enum Operation

{

OPER_Add,

OPER_Subtract,

OPER_Multiply,

OPER_Divide

};

此節(jié)代碼創(chuàng)建了一個enumerator(稱為Operation),它可以保存每一個數學運算的名稱。對于運算本身而言,這些名稱毫無用處。您可以把它們看作是一張用戶可見的列表,以便使用戶了解正在執(zhí)行的運算操作。切記在實際列表的開始和完結處都要使用大括號,并在第二個大括號之后使用分號!

4 現在我們來創(chuàng)建用于腳本的變量。在enumerator大括號下面幾行,添加以下文本。

Var () Float A B;

var Float Result;

var () Operation MathOperation;

第一行創(chuàng)建了名稱為A和B的兩個變量。在“var”之后加上的左右圓括號表明此類變量是可編輯的,意味著這些變量正在等待某種輸入。這些變量是浮點,也就是帶有小數點的數字。請注意在語句結束處加上分號。

第二行創(chuàng)建了另一個名為Result的變量。該變量是不可編輯的。這也是為什么語句開頭沒有左右圓括號的原因。它不需要進行編輯,僅僅因為它不需要編輯(沒有別的理由)。運算結果將作為節(jié)點行為的結果而創(chuàng)建出來。您當然不希望數學問題的答案是可編輯的。再一次提醒您:在末尾加上分號。

第三行創(chuàng)建了第四個變量,名稱為MathOperation。此變量從列表中調用Operation enumerator(運算計數器)來保存其中的一次運算。然而,除非我們使用執(zhí)行功能,否則此次操作不會產生任何效果。

5. 現在請保存您的文檔文件。此時,文件名稱無關緊要,只要保存該文件以防丟失。

指南A.2——創(chuàng)建自定義Kismet循序對象,第二部分:
設置默認屬性

1. 打開指南A.1中的文本文件。請?zhí)砑訋仔锌招幸粤粜┛臻g,因為我們要在本節(jié)指南中學習腳本的功能(functionality)。

2. 鍵入下列文本:

defaultproperties

{

}

本語句創(chuàng)建了包含屬性的腳本部分。

注意:在本節(jié)指南中每隔一行的語句都要輸入在大括號內。

3. 在大括號中加入下列語句:

defaultproperties

{

ObjName=”O(jiān)perations”

ObjCategory=”MasteringUnreal”

}

第一行創(chuàng)建了在Kismet右鍵關聯菜單中出現的本循序對象的名稱。在此情況下,列表中出現的節(jié)點就是Operations的形式。

第二行指定了將會出現循序對象的類別。在此情況下,它會成為一個叫做MasteringUnreal的新類別。

4. 在“ObjCategory=”MasteringUnreal””的下面一行添加以下語句:

defaultproperties

{

ObjName=”O(jiān)perations”

ObjCategory=”MasteringUnreal”

OutputLinks(0) = (LinkDesc=”O(jiān)ut”)

}

這一行語句為節(jié)點創(chuàng)建了一個命名為Out的單獨輸出鏈接。我們無需創(chuàng)建一個輸入鏈接,因為它繼承了原始類(class)的數據。理論上,我們可以在(0)的位置用與(1)相似的語句行添加出更多的輸出鏈接。

5. 在“OutputLinks(0) = (LinkDesc=”O(jiān)ut”)”的下面一行添加下列語句:

defaultproperties

{

ObjName=”O(jiān)perations”

ObjCategory=”MasteringUnreal”

OutputLinks(0) = (LinkDesc=”O(jiān)ut”)

VariableLinks.Empty

VariableLinks(0) = (ExpectedType=class’SeqVar_Float’LinkDesc=”A”PropertyName=A)

VariableLinks(1) = (ExpectedType=class’SeqVar_Float’LinkDesc=”B”PropertyName=B)

VariableLinks(2) = (ExpectedType=class’SeqVar_Float’LinkDesc=”Result”bWriteable=TruePropertyName=Result)

}

第一行用于移除可能會與原始類同時出現的任何變量鏈接信息。

第二行用于創(chuàng)建首個變量鏈接。我們建立了該變量所需的數據類型,此處即浮點。我們還要創(chuàng)建一個該鏈接出現時的名稱,命名為A。最后,我們要在腳本中建立一個變量,當我們向變量鏈接發(fā)送信息時,就在腳本中寫入此變量。

第三行是對第二行的復制。將LinkDesc和PropertyName屬性從原來的A設置為B。這樣就非常簡便地創(chuàng)建了第二個變量鏈接。

第四行是對第三行的復制,將LinkDesc和PropertyName屬性再次改變?yōu)镽esult,添加bWriteable(可寫入)屬性并將其設置成true(是)。這一點對于允許腳本對變量具有寫入功能是非常重要的。

6.保存您的文本文件。

指南A.3——創(chuàng)建自定義Kismet循序對象,第三部分:添加功能

1. 打開已存檔的文本文件。

2. 在變量列表的下方,defaultproperties(默認屬性)一行的上方,添加下列語句:

event Activated()

{

}

我們利用Activated(已激活)事件來設定功能框架。我們可以使用此事件是因其衍生自SequenceAction(循序動作) 類。這基本上意味著:由于在Kismet中插入一個事件,那么無論何時發(fā)送一個信號到該節(jié)點上,都將運行大括號中的任何代碼。

3. 在大括號中,添加下列語句:

event Activated()

{

switch (MathOperation)

{

}

}

我們現在正在新建一個基于MathOperation變量的開關/案例(switch/case)陳述,F在不必擔心此步驟的真實意義(下文中會進行解釋);只要牢記此陳述在“event Activated()”行中有其自身的大括號分層就可以了。

4. 現在我們要創(chuàng)建出一個運算行為,決定從enumerator列表中選中OPER_Add時產生的狀況。

Event Activated()

{

switch (MathOperation)

{

case OPER_Add:

Result=A+B;

break;

}

}

這幾行的作用是當用戶選擇了加法運算時,與之掛鉤的運算行為。請注意在“case OPER_ADD”一行后面有一個冒號(而不是分號)。還有一個“break”(中斷)陳述位于數學等號的后面。這樣就防止了在加法運算發(fā)生完畢后,其它的后續(xù)數學運算對此變量執(zhí)行任何操作。

5. 現在需要為另一個數學運算設定以下行為。請?zhí)砑酉铝姓Z句:

注意:利用復制/粘貼,來處理下面幾行語句是最便捷的!

event Activated()

{

switch (MathOperation)

{

case OPER_Add:

Result=A+B;

break;

case OPER_Subtract:

Result=A-B;

break;

case OPER_Multiply:

Result=A*B;

break;

case OPER_Divide:

Result=A/B;

break;

default:

Result=0;

break;

}

}

這些語句為接下來的數學運算建立了運算行為。請注意在最后又添加了一個默認案例,這是預防當事件中出現某些錯誤時,將Result變量值設回默認值0。

6. 若您沒有保持高度注意力,下面的部分會變得很難理解。我們需要在Switch大括號的后方、event大括號的前方添加一些行為代碼,允許原始類(original class)執(zhí)行某些功能,并通過節(jié)點發(fā)送出任何必要的信息。鍵入下列語句:

注意:在此步驟中,您要添加的只有最底部的語句。其它的代碼都是為了使我們的思路更為清晰而從上一語句章節(jié)中復制而來的。

event Activated()

{

switch (MathOperation)

{

case OPER_Add:

Result=A+B;

break;

case OPER_Subtract:

Result=A-B;

break;

case OPER_Multiply:

Result=A*B;

break;

case OPER_Divide:

Result=A/B;

break;

default:

Result=0;

break;

}

Super.Activated();

PopulateLinkedVariableValues();

OutputLinks[0].bHasImpulse=True;

}

第一行“Super.Activated()”,使得原始類(original class)執(zhí)行為了讓一切運算順利進行的任意必要功能。

第二行語句會向Kismet序列中的已鏈接變量發(fā)送出之前創(chuàng)建的數學運算結果的變量值?梢詫⑵淇醋鳛槭歉翶ismet編輯器中附屬于該節(jié)點的任何變量。

第三行語句僅是用于激活與該特定節(jié)點的Out輸入相連接的任意節(jié)點。

7. 腳本編輯已經完成了(當然如果有打字錯誤就不算了)。若存在一些Bug,請不要擔心。Unreal會在稍后匯編時向您顯示出產生錯誤的地方,所以您能夠很容易的回頭來修復它們。

保存您的文本文件。

最終的腳本應如下所示:

class SeqAct_MathOperations extends SequenceAction;

enum Operation

{

OPER_Add,

OPER_Subtract,

OPER_Multiply,

OPER_Divide

};

var () Float A B;

var Float Result;

var () Operation MathOperation;

event Activated()

{

switch (MathOperation)

{

case OPER_Add:

Result=A+B;

break;

case OPER_Subtract:

Result=A-B;

break;

case OPER_Multiply:

Result=A*B;

break;

case OPER_Divide:

Result=A/B;

break;

default:

Result=0;

break;

}

Super.Activated();

PopulateLinkedVariableValues();

OutputLinks[0].bHasImpulse=True;

}

defaultproperties

{

ObjName=”O(jiān)perations”

ObjCategory=”MasteringUnreal”

OutputLinks(0) = (LinkDesc=”O(jiān)ut”)

VariableLinks.Empty

VariableLinks(0) = (ExpectedType=class’SeqVar_Float’LinkDesc=”A”PropertyName=A)

VariableLinks(1) = (ExpectedType=class’SeqVar_Float’LinkDesc=”B”PropertyName=B)

VariableLinks(2) = (ExpectedType=class’SeqVar_Float’LinkDesc=”Result”bWriteable=TruePropertyName=Result)

}

指南A.4——創(chuàng)建自定義Kismet循序對象第四部分:保存至UnrealScript并調整.INI文件

1. 繼續(xù)前一指南,打開您的文本文件。

2. 第一步是保存文件,使Unreal懂得這是一個待編輯的UnrealScript。首先打開文本編輯器的Save(保存)對話框。打開位于UnrealEngine3安裝目錄下的Src文件夾。在此文件夾內,新建一個命名為MasteringUnreal的文件夾。打開這個子文件夾,再創(chuàng)建另一個文件夾并命名為Classes。打開最后這個文件夾,將您的文件保存為SeqAct_MathOperations.uc。

您的最終路徑可能如下顯示:

C:UnrealEngine3DevelopmentSrcMasteringUnrealClassesSeqAct_MathOperations.uc

注意:最終的文件名稱必須與腳本創(chuàng)建伊始時的類名稱保持一致。并且注意在該文件名的后綴名是.UC!請勿將您的文件保存為TXT 格式的文件。

3. 現在需要調整ExampleEngine.INI文件。不過首先還是要確保無論是《Unreal》游戲還是UnrealEngine3 都不在運行狀態(tài)。若正在運行,就會覆蓋您的所有更改!

4. 打開ExampleEngine.INI文件,該文件應該存放在您的UnrealEngine3 安裝目錄下的Config文件夾內。

5. 在INI文件內,找到EditPackages 語句列表的位置。此處應該有若干行語句,指定了當Unreal啟動時自動加載的文件包名稱。在列表末端,插入下面的新語句:

EditPackages=MasteringUnreal

請注意這就是在Src文件夾內創(chuàng)建的文件夾的名稱。保存然后關閉INI文件。

6. 運行UnrealEd。您會收到一條信息,警告腳本已過期。點擊Yes進行重建(rebuild)。

注意:若您的代碼中存在任何Bug,就會出現在重建窗口(rebuild window)中。

7. 若進展順利,您就可以運行UnrealEd了。右擊并從關聯菜單中選擇MasteringUnreal > Operations。如此,就在Kismet中創(chuàng)建了一個新的可用節(jié)點,可以連接任意的兩個值,也可以在節(jié)點屬性中改變數學運算。

<<<< 指南結束

以上述示例為基礎,您就可以自行嘗試新建循序對象了。若您計劃大量地使用循序對象功能,那么在真實源代碼(Unreal游戲源代碼)中而非通過Unreal腳本中應用循序對象會更為有效。當然,即便您無法獲得或者根本不想了解Unreal源代碼,腳本仍然可以為您提供一種快捷有效的接近游戲原型(prototype)的途徑來創(chuàng)建所需的循序對象。

指南A.5——創(chuàng)建一個可放置的WaterVolume(水體積)

Unreal使用WaterVolume(水體積)實現了玩家的隨意暢游,但在編輯器內的默認狀態(tài)下,volume(體積)是不可放置的。正因如此,創(chuàng)建出自定義的可放置WaterVolume class(水體積類)就變得極有必要,它從基礎WaterVolume(水體積)類別擴展而來的,并能將我們自己的WaterVolume(水體積)變得可放置。 這是一個非常簡單的過程,它僅僅只需要說明Placeable specifier的類別。而其他所有功能都繼承于這個基本類別。

若您不熟悉編輯腳本,不用擔心。您還是可以很容易的進行下列的設置:

1. 首先,確定您有一個文本編輯程序。一般來說,可以選擇使用ConTEX或者Notepad。它們中的任意一個都可以為我們所用。

2. 這個類別中的第一行就是對類別的說明。我們在此規(guī)定自定義WaterVolume(水體積)的名字,同樣還是從我們的類別延伸過來的,或者繼承了其功能的類別所在的地方,以及可以選擇添加的任意specifiers,例如前面提到的the Placeable specifier。輸入下列語句:

class MU_WaterVolume extends WaterVolume

從左到右,這一行首先規(guī)定了我們正在創(chuàng)建一個新的“類”。然后指定了這個新和類名稱MU_WaterVolume(水體積)。其中的關鍵字“extends”意味著,這個類別要繼承它的功能和成員,例如來自從另一個類別的變量和默認屬性。接下來的是類別的名稱,WaterVolume(水體積),這個類別應繼承于它。

3. 現在,按下回車鍵(Enter),進入下一行,輸入下列語句:

Placeable;

由于文本空格了好幾行,所以此處才是繼續(xù)之前輸入的編輯碼的第一行。用空格是為了閱讀更方便,我們交錯排列這一行,使它看起來更容易辨識為第一行的繼續(xù)。如此也就更容易確認新類別的名稱和源類別,也不會和一堆specifiers擁擠在一起。

這一行告訴了Unreal:可以將這個類別放置在編輯器的地圖中。此行末尾是一個分號,意即這是一個執(zhí)行命令的結束。

4. 按兩次回車鍵,跳過一行,輸入下列語句:

defaultproperties

{

}

通常,這個默認屬性部分,就是給從屬于類別的變量值賦上特別的初始值的地方。在我們的案例中,當我們只是從源類別中繼承所有的值時,不會設置任何屬性。添加這一部分只是為了完成性,所以省略這一部分也不會造成任何問題。

5. 就編輯碼而言,這一是完成腳本的最后一步。您的最終腳本應看起來像這樣:

class MU_WaterVolume extends WaterVolume

Placeable;

defaultproperties

{

}

6. 下一步即保存文件,使得Unreal將它編輯成一個腳本文件包或者.u文件。要達到這個目的,首先,您必須創(chuàng)建一對文件夾。找到位于UnrealEngine3安裝文件的Development目錄下的Src文件夾。在該文件中,創(chuàng)建一個文件夾,命名為MasteringUnreal,當然,若已存在MasteringUnreal文件夾,就不需新建了。打開新的文件夾,創(chuàng)建另一個命名為Classes的文件夾,同上,若該文件夾已存在,也無須新建了。最后,保存文本文件至Classes文件夾中,并命名為MU_WaterVolume(水體積).uc。

該文件的最終路徑應看起來如下:

C:UNrealEngine3DevelopmentSrcMasteringUnrealClassesMU_WaterVolume.uc

注:務必使該文件的名稱和創(chuàng)建的類別名稱一致,并讓該文件以.uc擴展名一起保存。只有這樣,Unreal才能識別該文件是一個需要編輯的腳本文件。

7. 現在,為了讓Unreal搜索您已創(chuàng)建的腳本,必須在ExampleEngine.ini文件中創(chuàng)建一個條目,在對該文件作出修改之前,您必須確定關閉了Unreal或者UnrealEd的所有內存塊(instances),因為當這些內存塊運行時,它們會覆蓋您做的任何修改。

8. 打開ExampleEngine.ini文件,其位置在UnrealEngine3安裝文件中的Config文件夾內。

9. 在這個文件中,找到EditPackages 條目所在的部分。該處會有一些條目說明了當Unreal啟動時,會安裝哪一個文件包。更重要的是,當發(fā)現有文件超過時效期時,這里列出的文件包將會進行編輯。也就意味著,UnrealScript (.uc)文件比同這些腳本結合的腳本文件包(.u)要新。

在最后一個EditPackages條目后面,插入一行新的語句:

EditPackages=MasteringUnreal

注:這里輸入的文件包的名稱,應同保存.uc文件的Src文件夾內創(chuàng)建的子文件夾名稱一致。

一旦創(chuàng)建了新的條目,保存并關閉ExampleEngine.ini文件。

10. 啟動UnrealEd。您會接受到一條消息,通知您腳本已過期,并詢問您要采取什么行動。點擊Yes重建Unreal,或者編輯腳本。由于只有存在新文件的文件包才會進行編輯,所以這一進程不會耗時太長。

注:若在編輯碼中存在任何漏洞或者錯誤,這個編輯窗口會告訴您它們的位置(文件名和第幾條命令行),以及漏洞和錯誤是什么。

11. 假設沒有任何錯誤,您現可以準備啟動UnrealEd并檢測新的Volume。當您右擊工具欄中Add Volume按鍵時,您會看到一個命名為MU_WaterVolume(水體積)的新Volume,當進入該Volume時,玩家可以隨心暢游。

指南A.6——創(chuàng)建一個會爬梯子的自定義Pawn

默認的Pawn類別不具備攀爬的能力。為了具備這樣的能力,必須創(chuàng)建一個新的Pawn類別,該類別繼承了默認的Pawn類別,由于它在新的類中設定了默認屬性,這就比Placeable WaterVolume(水體積)類別涉及的更多。

您若不熟悉編輯腳本,不用擔心。您還是可以很容易的進行下列的設置:

1. 首先,確定您有可用的文本編輯程序。一般來說,您可以選擇使用ConTEXT或者Notepad。它們中的任意一個都可以為我們的目的服務。

2. 這個類別中的第一行是對類別說明。這是我們指定自定義Pawn的名字的位置,同樣還是從我們的類別延伸過來的,或者繼承其功能的類別所在的地方。輸入下列語句:

class MU_Pawn extends ExamplePawn;

從左到右,這一行首先規(guī)定了我們正在創(chuàng)建一個新的“類”。然后指定類名稱為MU Pawn。關鍵字“extends”告訴關卡設計師,這個類別要繼承它的功能和成員,例如從另一個類別來的變量和默認屬性。接下來的是類別的名稱,ExamplePawn,這個類別應繼承于它。這一行結尾處是一個分號,它告訴了關卡設計師:這是這一條執(zhí)行命令的結束。

3. 按兩次回車鍵,跳過一行,然后輸入下列語句:

defaultproperties

{

}

通常,這個默認屬性部分,就是給從屬于類別的變量值,賦予特別的初始值的地方。

4. 攀爬梯子的功能設置在Pawn類別中,但是,只有CanClimbLadders屬性設置為True(是),只有這樣才能激活該項功能,而事實上,CanClimbLadders屬性并未設置為True(是)。在defaultproperties部分,我們開始設置屬性。在{和}之間輸入下列語句:

defaultproperties

{

bCanClimbLadders=True

}

您也許注意到了,這一行語句結尾沒有分號。默認屬性中的語句是不會以分號結尾的。您僅只需按回車鍵開始新的一行,以此表示執(zhí)行命令中的新語句。

5. 就編輯代碼而言,腳本已經編輯完成了。您的最終腳本看起來應像這樣:

class MU_Pawn extends ExamplePawn;

defaultproperties

{

bCanClimbLadders=True

}

6. 下一步就是保存文件,使得Unreal可以將它編輯成一個腳本文件包或者.u文件。要達到這個目的,您首先必須創(chuàng)建一對文件夾。找到位于UnrealEngine3安裝文件的Development目錄下的Src文件夾。在該文件中,創(chuàng)建一個文件夾,命名為MasteringUnreal,當然,若已經存在一個MasteringUnreal文件夾,就不用新建了。打開新的文件夾,新建另一個文件夾命名為Classes,同上,若該文件已經存在,也就不用新建了。最后保存文本文件至Classes文件夾中,并命名為MU_Pawn.uc 。

文件的最終路徑應看起來像這樣:

C:UNrealEngine3DevelopmentSrcMasteringUnrealClassesMU_Pawn.uc

注:務必要讓該文件的名稱和創(chuàng)建的類別名稱一致,并讓該文件以.uc擴展名一起保存,只有這樣才能讓Unreal識別該文件為一個需要編輯的腳本文件。

指南A.7——創(chuàng)建一個使用自定義Pawn的自定義Gametype

現在我們已經創(chuàng)建了自定義的Pawn類別,我們需要找到一個方法,讓它能在游戲運行時,代替默認的Pawn類別。我們要創(chuàng)建一個使用自定義Pawn類別的新游戲規(guī)則,然后把這個新游戲規(guī)則規(guī)定成當游戲運行時默認的游戲規(guī)則。

1. 打開文本編輯程序。

2. 這個類別中的第一行就是類別說明。我們在此指定自定義Pawn類別的名稱,同樣還是從我們的類別延伸過來的,或者繼承其功能的類別所在的位置,輸入下列語句:

class MU_GameInfo extends ExampleGameInfo;

從左到右,這一行首先規(guī)定了我們正在創(chuàng)建一個新的“類”。然后指定了該新類別的名稱MU GameInfo。關鍵字“extends”告訴關卡設計師,這個類別要繼承它的功能和成員,例如來自另一個類別的變量和默認屬性。接下來的是類別的名稱,ExampleGameInfo,這個類別應繼承于它。這一行結尾處是一個分號,它意味著:這是這一條執(zhí)行命令的結束。

3. 按兩次回車鍵,跳過一行,然后輸入下列語句:

defaultproperties

{

}

通常,這個默認屬性部分,就是給從屬于類別的變量值,賦予特別的初始值的地方

4. 該屬性表明了使用Pawn類別的游戲規(guī)則叫做DefaultPawnClass。在defaultproperties部分內,我們來設置屬性。在{和}之間輸入下列語句:

defaultproperties

{

DefaultPawnClass=class'MasteringUnreal.MU_Pawn'

}

初看起來,這個語句的結構讓人覺得難懂,實際上,它很明了。DefaultPawnClass變量是“類型”類,我們用下列的語句結構來規(guī)定“類型”。

class'Package.Group.Name'

在我們的案例中,“package”是包含類別或者的腳本文件包的名稱,或者是MasteringUnreal的名稱!癎roup”是可選擇的參數,因為并不是所有的內容都回包含在一個Group里。自定義Pawn類別沒有任何的分組(Group),所以這里省略了!皀ame”就是這個類別的名稱,也即MU_Pawn。

5. 就編輯代碼而言,腳本已經編輯完成了。您的最終腳本應看起來像這樣:

class MU_ GameInfo extends ExampleGameInfo;

defaultproperties

{

DefaultPawnClass=class'MasteringUnreal.MU_Pawn'

}

6. 下一步是保存文件,使得Unreal可以將它編輯成一個腳本文件包或者.u文件。要達到這個目的,首先,您必須創(chuàng)建一對文件夾。找到位于UnrealEngine3安裝文件中Development目錄下的Src文件夾。在該文件中,創(chuàng)建一個文件夾,命名為MasteringUnreal,當然,若已經存在一個MasteringUnreal文件夾,就不用新建了。打開新的文件夾,新建另一個文件夾命名為Classes,同上,若該文件已經存在,也就不用新建了。最后保存文本文件至Classes文件夾中,并命名為MU_GameInfo .uc。

文件的最終路徑應看起來像這樣:

C:UNrealEngine3DevelopmentSrcMasteringUnrealClassesMU_GameInfo.uc

注:務必要讓該文件的名稱和創(chuàng)建的類別名稱一致,并讓該文件以.uc擴展名一起保存,只有這樣才能讓Unreal識別該文件為一個需要編輯的腳本文件。

7. 現在,為了讓Unreal知道去搜索您已創(chuàng)建的腳本,必須在ExampleEngine.ini文件中創(chuàng)建一個條目,在對該文件作出任何修改之前,確定關閉了Unreal或者UnrealEd的所有內存塊(instances),因為當這些內存塊運行時,它們會覆蓋您做的所有修改。

8. 打開ExampleEngine.ini文件,其位置在UnrealEngine3安裝文件中的Config文件夾內。

9. 在這個文件中,找到EditPackages 條目所在的部分。哪里會有一些已存在的條目說明了當Unreal啟動時,會安裝哪一個文件包。更重要的是,當發(fā)現有文件超過時效期時,這里列出的文件包將會進行編輯。這就意味著,UnrealScript (.uc)文件比同這些腳本結合的腳本文件包(.u)要新。若已經有一個MasteringUnreal文件包條目在那個地方,就可以跳過這一步。

在最后一個EditPackages條目后面,插入一行新的語句:

EditPackages=MasteringUnreal

注:這里輸入的文件包的名稱,應同保存.uc文件的Src文件夾內創(chuàng)建的子文件夾名稱一致。

一旦創(chuàng)建了新的條目,就保存并關閉ExampleEngine.ini文件。

10. 啟動UnrealEd。您會接受到一條消息,通知您腳本已過期,并詢問您要采取什么行動。點擊Yes重建Unreal,或者編輯腳本。只有存在新文件的文件包才會進行編輯,所以這一進程不會耗時過長。

注:若在編輯碼中存在任何漏洞或者錯誤,這個編輯窗口會告訴您它們的位置(文件名和第幾條命令行),以及漏洞和錯誤是什么。

11. 假設沒有任何錯誤,您現在就可以設置默認的游戲規(guī)則了。打開位于Config文件夾內的ExampleGame.ini文件,找到一行包含下列內容的命令行:

DefaultGame=ExampleGame.ExampleGameInfo

把這一行改成新的游戲規(guī)則的類別。完成后,它看起來應該像這個樣子:

DefaultGame=MasteringUnreal.MU_GameInfo

保存并關閉該文件。

12. 現在您可以啟動UnrealEd。當您玩到一個包含LadderVolumes的地圖時,玩家應該就可以毫無困難的進行攀爬。

,
朱峰社區(qū)3dsmax2016模擬學習系統 朱峰社區(qū)3dsmax2016模擬學習系統

朱峰社區(qū)網頁版
朱峰社區(qū)網頁版(手機掃描-分享-添加到屏幕)


朱峰社區(qū)公眾號
朱峰社區(qū)微信公眾號(微信掃一掃-關注)

資源說明圖文教程無法下載,只能觀看圖片和文字。
版權規(guī)則本站圖文皆來自互聯網共享資源,如涉及到版權請查看版權規(guī)則。本平臺提供圖文僅可用于個人學習,如用于商業(yè)請購買正版。您必須遵守的版權規(guī)則

未知用戶

未知用戶

2005-2025 朱峰社區(qū) 版權所有 遼ICP備2021001865號-1
2005-2025 ZhuFeng Community All Rights Reserved

VIP

朱峰社區(qū)微信公眾號

回頂部

1.復制文本發(fā)給您的QQ好友或群、微信等;好友點擊鏈接以后,轉發(fā)就成功了。 2.如朋友點擊您的鏈接,您需要需刷新一下才行;同一個好友僅能點擊一次。
購買VIP,觀看所有收費教程。