UDN
Search public documentation:
UnrealScriptClassesCH
English Translation
日本語訳
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
日本語訳
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
UnrealScript 类
概述
Actor
类扩展而来的。这里有从基类 Object
类直接扩展而来的类,但是它们通常都是供 Actor 使用的辅助类,例如组件。
UnrealScript 中类和对象的概念与大多数其他面向对象的编程语言相似。网络上到处都是有关这方面的信息。
类声明
class MyClass extends MyParentClass;
MyClass
的新类,它继承了 MyParentClass
的功能。这意味着每个类中都包含其父代类中的所有变量、函数和声明。此外,它接下来可以添加新的变量声明,添加新函数(或覆盖现有函数),以及添加新的声明(或向现有声明中添加功能)。
继承和多态的概念(函数的覆盖)对于编程新手来说是很重要的,并可以保证其他研究顺利进行,尤其是面向对象语言。
类修饰符
class MyClass extends MyParentClass [Specifier Specifier ... Specifier];
class MyClass extends MyParentClass [Specifier Specifier ... Specifier];
- Native(PackageName)
- 表示“这个类使用的是幕后 C++ 支持”。虚幻希望 native 类在 .EXE 中包含一个 C++ 实现。 只允许 native 类声明 native 函数或实现 native 接口。 Native 类必须始终由其他 native 类衍生而来。 Native 类可以使用必要的 技巧 创建一个自动生成的 C++ 头文件,与脚本变量和指定的函数进行交互。 默认情况下,
PackageName
是存放脚本类的包。例如,如果这个类在引擎包中,最后自动生成的头文件将会被命名为EngineClasses.h
。 - NativeReplication
- 表示这个类的变量值的复制函数在 C++ 实现中进行处理。 只对 native 类有效。
- DependsOn(ClassName[,ClassName,...])
- 表示 ClassName 是在这个类之前进行编译的。 ClassName 必须在同一个(或者是以前的)软件包中指定一个类。 可以使用一个由逗号界定的单独
DependsOn
行指定多个从属类,或者可以使用一个独立的DependsOn
行为每个类指定。这在类使用一个在其他类中声明的结构体或枚举变量时非常重要,因为编译器只知道在它已经编译的类中都有些什么。 - Abstract
- 会将类声明为“抽象基类”。这样会阻止用户在虚幻编辑器中向这个世界中添加这个类的 actor,或者在游戏过程中创建这个类的实例,因为这个类本身没有任何意义。例如,
Actor
基类是抽象类,而Ladder
子类不是抽象类 -- 那么您可以在世界中放置一个Ladder
,但是您不能将Actor
放置在世界中。 将该关键字传递到固有子代类中,但是不要编写子代类脚本。例如,Actor
是抽象类且Pawn
由Actor
扩展而来,但是没有将其声明为抽象类。没有继承修饰符,所以可以对Pawns
进行实例化。 - Deprecated
- 使这个类的所有对象都会被加载但是却不会保存。作废 actor 的任何放置实例都会在关卡设计师加载编辑器中的地图时发出警告信息。 将这个关键字传递给子类。
- Transient
- 也就是“属于这个类的对象永远不应该保存在磁盘上”。只有在与特定类型的 native 类结合在一起才有效,它们本质上不是固定的,例如玩家或窗口。 将这个关键字传递给子类,子类可以使用
NonTransient
关键字覆盖这个标志。 - NonTransient
- 使从基类继承的
Transient
关键字无效。 - Config(IniName)
- 表示允许这个类在配置文件 (.ini)中存储数据。 如果在这个类中有任何可配置的变量(使用
config
或globalconfig
变量修饰符进行声明),这个修饰符会将这些变量存储在 ( 和 ) 内的指定配置文件中。 将这个标志传递给所有子类,而且无法使这个标志无效,但是子类可以通过重新声明Config
关键字并指定一个不同的文件名来更改这个 .ini 文件。将IniName
的值添加到游戏名称后面 - 减去 "Game" 部分 - 指定要存储数据的 .ini 文件的名称(例如,在 UDKGame 指定Config(Camera)
将会使这个类使用UDKCamera.ini
文件)。还可以将关键字inherit
指定为IniName
,这样做会使得这个类使用与它的父代相同的配置文件。默认情况下,会有一些 .ini 文件,例如:- Config(Engine): 使用引擎配置文件,也就是在您的游戏名称后面加上
Engine.ini
。 例如,UDKGame 的引擎配置文件的名称是UDKEngine.ini
。 - Config(Editor): 使用编辑器配置文件,也就是您的游戏名称后面加上
Editor.ini
。 例如,UDKGame 的编辑器配置文件的名称是UDKEditor.ini
。 - Config(Game): 使用游戏配置文件,也就是您的游戏名称后面加上
Game.ini
。 例如,UDKGame 的游戏配置文件的名称是UDKGame.ini
。 - Config(Input): 使用输入配置文件,也就是您的游戏名称后面加上
Input.ini
。 例如,UDKGame 的引擎配置文件的名称是UDKInput.ini
。
- Config(Engine): 使用引擎配置文件,也就是在您的游戏名称后面加上
- PerObjectConfig
- 这个类的配置信息将会根据对象进行存储,其中每个对象在 .ini 文件中都有一项,它以这个对象的名字命名,形如
[ObjectName ClassName]
。 将这个关键字传递给子类。 - PerObjectLocalized
- 这个类的本地化数据将会根据对象进行定义,其中每个对象在本地化文件中都有一项,以这个对象的名字命名,格式为
[ObjectName ClassName]
。 将这个关键字传递给子类。 - EditInlineNew
- 编辑器。 表示这个类的对象可以通过虚幻编辑器属性窗口进行创建(默认的操作是只引用可以通过属性窗口进行分配的现有对象)。 将这个标志传递给所有子类,子类可以使用
NotEditInlineNew
关键字覆盖这个标志。 - NotEditInlineNew
- 编辑器。 使从基类继承的
EditInlineNew
关键字无效。 如果没有使用EditInlineNew
的父类,则不生效。 - Placeable
- 编辑器。 表示可以在虚幻编辑器中创建这个类并将其放置到关卡、UI 场景或 kismet 窗口中(具体情况取决于类的类型)。 将这个标志传递给所有子类,子类可以使用
NotPlaceable
关键字覆盖这个标志。 - NotPlaceable
- 编辑器。 使从基类继承的
Placeable
关键字无效。 表示在虚幻编辑器中不可以将这个类放置到关卡等等位置。 - HideDropDown
- 编辑器。 禁止这个类显示在虚幻编辑器属性窗口组合框中。
- HideCategories(Category[,Category,...])
- 编辑器。 为这个类的对象指定应该隐藏在虚幻编辑器属性窗口中的一个或多个类别。 要隐藏没有声明类别的变量,请使用声明这个变量的类的名称。将这个关键字传递给子类。
- ShowCategories(Category[,Category,...])
- 编辑器。 使从基类继承的
HideCategories
关键字无效。 - AutoExpandCategories(Category[,Category,...])
- 编辑器。 为这个类的对象指定应该在虚幻编辑器属性窗口中自动展开的一个或多个类别。 要自动展开没有声明类别的变量,请使用声明这个变量的类的名称。
- CollapseCategories
- 编辑器。 表示这个类的属性不应该归类在虚幻编辑器属性窗口的类别中。 将这个关键字传递给子类,子类可以使用
DontCollapseCategories
关键字覆盖这个标志。 - DontCollapseCategories
- 编辑器。 使从基类继承的
CollapseCatogories
关键字无效。 - ForceScriptOrder(true/false)
- 编辑器。 强制属性窗口显示这个类的对象,可以对属性和类别使用脚本定义排序(如果为 true)或者按照字母顺序(如果为 false)。
- Within ClassName
- 高级。表示这个类的对象在没有 ClassName 的实例的情况下无法存在。 为了创建这个类的对象,您必须将 ClassName 的实例指定为
Outer
对象。 该关键字必须紧接在这个类声明后面。 - Inherits(ClassName[,ClassName,...])
- 高级。用于多个继承 - 可以指定其他基类。 可以使用一个由逗号界定的单独
Inherits
行指定多个基类,或者可以使用一个独立的Inherits
行为每个类指定基类。 只对 native 类有效。 不支持通过两个 UObject 衍生的类生成的多个继承。 - Implements(ClassName[,ClassName,...])
- 高级。指定一个或多个这个类将会实现的界面类。 可以使用一个由逗号界定的单独
Implements
行指定多个基类,或者可以使用一个独立的Implements
行为每个类指定基类。 只有 native 类可以实现 native 界面。 - NoExport
- 高级。表示这个类的 C++ 声明不应该在脚本编译器自动生成的 C++ 头文件中。 该 C++ 类声明必须在单独的头文件中手动进行定义。 只对 native 类有效。
- ClassGroup(Groupname[,Groupname,...])
- 表示编辑器的 Actor 浏览器在 Actor 浏览器中启用 Group View(组视图)的时候应该在指定的
GroupName
中包括这个类及其所有子类。