UE3脚本UnrealScript UC语法点滴

2024-06-24 14:08

本文主要是介绍UE3脚本UnrealScript UC语法点滴,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

持续更新

目录

类定义修饰符 

1.dependson(CLASSNAME)

2.config(ININAME)

3.native

4.notplaceable

5.inherits(CLASSNAME1[,CLASSNAME2,...])

类对象实例创建

类默认属性设置

变量

1.声明

var

local

2.修饰符

config 

3.array 类型变量 以及 迭代函数 foreach使用  

4.String 类型和 Name 类型

函数

1.声明

1)function关键字

2)event

2.修饰符

final 

native

其他

1.宏


 

UDK仅仅依赖于使用UnrealScript UC脚本来来写游戏逻辑
授权用户可以结合使用UrealScript和native C++代码


在游戏中可以看到和交互的都叫 Actors对象,都继承自Actor类

Actor使用的辅助类,比如Component,均继承自基础的Object类。

一个uc脚本只定义一个类。

类定义修饰符 

定义类的时候会对类进行各种修饰。下面介绍一些常用的。

详细请看 官方文档链接 

1.dependson(CLASSNAME)

class 类名
    dependson(CLASSNAME1[,CLASSNAME2,...])

规定编译顺序, 先编译 CLASSNAME1, CLASSNAME2, 然后再编译 CLASSNAMEX。
CLASSNAMEX 中肯定要用到 CLASSNAME1 CLASSNAME2 中的东西。

2.config(ININAME)

class 类名
    config(MyConfig)

1.

表示 任何在 类名中 声明为 Config or GlobalConfig  的变量 都会写入到 XXXMyConfig 配置文件中。
应该注意只把需要保存的变量声明为 Config or GlobalConfig
在游戏退出的时候会保存,以及主动调用SaveConfig函数的时候会保存这些变量,供下次初始化。

2.

子类会继承父类的config,你也可以重写另外一个ININAME。

3.

默认的ININame如下一些,默认存在的ini配置文件:
    Engine
    Editor
    Game
    Input
前面说过,真正的配置文件都是 XXXEngine.ini XXXEditor.ini。。。

配置文件相关的介绍请戳这里。

3.native

native 有表示与C++交互的类,此类可以声明 native函数,实现native接口。

native 类必须继承自native的类。

native类会 在编译脚本的时候 会在一个名字为 “包名Classes”  的C++头文件中 自动创建相关联的类。

如果定义的类在Engine的包内,那么自动创建的关联类就定义在 EngineClasses.h中。

 

4.notplaceable

不可放置类,编辑器相关。

 

5.inherits(CLASSNAME1[,CLASSNAME2,...])

用于表示多重继承,指定除了 extends 以为其他的基类。

CLASSNAME1,CLASSNAME2只能是native类。

不支持来自两个UObject派生类的多重继承。


类对象实例创建

https://api.unrealengine.com/udk/Three/UnrealScriptFunctions.html#Creating%20objects

如果是 Actor 就用 Spawn函数 (Actor.uc 中的函数)
如果不是 Actor 就用 new 操作符号


 


类默认属性设置

https://api.unrealengine.com/udk/Three/UnrealScriptDefaultProperties.html

定义在uc文件的最后:

  defaultproperties{}

相当于构造函数,在创建类实例的时候,会进行设置一些默认值。

默认设置块中的语法有一些限制,比如不能写语句,=两边不能有空格等等

具体事例看文档,需要用到再看。

 


变量

https://api.unrealengine.com/udk/Three/UnrealScriptVariables.html

1.声明

var

用来声明类中的变量,相当于c++的成员变量,这里叫做实例变量

实例变量必须声明在类函数的声明之前。

 

local

用来声明函数体内的变量,即局部变量

同样,局部变量必须声明在函数中函数体的实现之前。

 

2.修饰符

config 

之前说过的config 声明了这个以后就是可配置的了 会保存到 ini文件中。并且不能再 default properties 初始化。

 

3.array 类型变量 以及 迭代函数 foreach使用  

class TestArray
    

var array<类型A> arraysItems


function doSth()
{
        local 类型A iteratorItem;
        
        foreach arraysItems(iteratorItem)
        {
            `log("Array iterator test #1:"@iteratorItem);
        }
}

 

4.String 类型和 Name 类型

String constants must be enclosed in double quotes, for example: "MyString"
Name constants must be enclosed in single quotes, for example 'MyName'


函数

https://api.unrealengine.com/udk/Three/UnrealScriptFunctions.html

1.声明

1)function关键字

 

2)event

当此函数需要被 native C++ 调用的的时候 用 event 关键字来代替 function 关键字。 

event Touch( Actor Other, PrimitiveComponent OtherComp, vector HitLocation, vector HitNormal );

nativeC++调用的时候 函数名为  eventTouch  

 

2.修饰符

final 

禁止此子类被子类重写,放在 function 前面。

final function bool ConfigView( vector Delta );

native

实现在C++,可以在uc中调用,比如内置的actor的move函数

native final function bool Move( vector Delta );

 补充:native函数与Native C++函数实现的关联

即怎么就通过uc的native XXX 函数 最后执行到了某个类中的execXXX函数了

在启动的时候加载包 LaunchEngineLoop.cpp 中的 LoadPackageList函数

最终调用到 UFunction.Bind 函数进行对每一个类中的 native 函数的绑定,具体:

1. 拼uc中的native函数在C++中对应的函数名,规则: 前缀+ 类名 + exec + 函数名
其中前缀可能是U 或者 A
A:此类是继承自 AActor 
U:继承自UObject

拼出这个函数名以后就可以在 GNativeLoopupFuncs 这种表中找到一个入口,指向具体实现了。


2. 而GNativeLoopupFuncs 相当于一张二级表
一级表 相当于 key = uc类名, value = 此类中的对应C++中的native函数指针表  value也相当于一个表。

最终在 Native FindNative(FName ClassName, ANSICHAR* NativeName) 中
通过 uc类名和C++中的native函数名 找到实现。
 

3.其中 GNativeLoopupFuncs 的构建代码是自动生成的 在 包名Classes.h 头文件中。
详情查看 
GNativeLoopupFuncs.Set 函数
以及
MAP_NATIVE 宏


其他

1.宏

https://api.unrealengine.com/udk/Three/UnrealScriptPreprocessor.html

`var 的意思是 var 是一个宏
宏的语法 `define 
定义    `define   hello   "Hello, World!"
使用    `hello 就是 "Hello, World!"    

宏是作用域在文件范围内。在文件中定义了以后的行中可见。

如果想要宏在一个包的所有类中均可用,就在工程目录下建立一个 Globals.uci
i.e. Development\Src\MyProject\Globals.uci
 

 

这篇关于UE3脚本UnrealScript UC语法点滴的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090368

相关文章

UE3 的Config文件夹

工作中需要用到UE3,看官方文档中文版翻译有些偷懒和翻译不妥当,故看着英文自己翻译理解了一下,以供后续参考。 目录 基础内容 0.概述  1.uc脚本中的类定义关联配置文件和保存 2.保存配置文件API SaveConfig() StaticSaveConfig() 3.ucc 编译的时候使用 4.配置文件类型 Default 配置文件 和 XXX 配置文件  Base 配置

python 点滴学

1 python 里面tuple是无法改变的 tuple = (1,),计算tuple里面只有一个元素,也要加上逗号 2  1 毕业论文改 2 leetcode第一题做出来

【青龙面板辅助】JD商品自动给好评获取京豆脚本

1.打开链接 开下面的链接进入待评价商品页面 https://club.jd.com/myJdcomments/myJdcomments.action?sort=0 2.登陆后执行脚本 登陆后,按F12键,选择console,复制粘贴以下代码,先运行脚本1,再运行脚本2 脚本1代码 可以自行修改评价内容。 var content = '材质很好,质量也不错,到货也很快物流满分,包装快递满

Redis-在springboot环境下执行lua脚本

文章目录 1、什么lua2、创建SpringBoot工程3、引入相关依赖4、创建LUA脚本5、创建配置类6、创建启动类7、创建测试类 1、什么lua “Lua”的英文全称是“Lightweight Userdata Abstraction Layer”,意思是“轻量级用户数据抽象层”。 2、创建SpringBoot工程 3、引入相关依赖 <?xml version

PHP的基本语法有哪些?

PHP的基本语法包括以下几个方面: PHP标记:PHP脚本以<?php开始,以?>结束。这是PHP文件的默认文件扩展名是.php。 变量和常量:变量以$符号开头,其后是变量的名称。常量使用define()函数定义,例如define("常量名", 常量值);。 数据类型:PHP支持多种数据类型,如整型、浮点型、字符串型等。 注释:PHP支持单行注释(用//表示)和多行注释(用/* */表示

vscode python pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

在vscode中控制台运行python文件出现:无法将"pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 使用vscode开发python,需要安装python开发扩展: 本文已经安装,我们需要找的是python安装所在目录,本文实际路径如下: 如果在本文路径中没有此目录,请尝试在C盘中搜索 python,搜索到相关python目录后,点击Python 3.9进入目录,

android的strings整理脚本

统一对String整理的工具,结构如下 代码 package com.owant.toollib;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.ArrayList;import java.util.List;import java.util

网页脚本输入这么简单

如何在网页中进行脚本操作呢? 研究了一下,很简单,用google浏览器的Console直接操作javaScript。思路: Created with Raphaël 2.1.0 开始 输入(如何输入) 点击(如何点击) 结束 下面是,通过脚本刷直播屏的实现,直接在Console输入即可 var words=new Arra

Flex 布局教程:语法篇

网页布局(layout)是 CSS 的一个重点应用。 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 20

Tkinter和selenium结合实现登录UC后台,最后打包成exe

主要实现的功能:小号模式自动登录UC阿里汇川广告后台,屏蔽账号密码输入 主要用的技术:用Tkinter展示所有的广告账号界面,使用selenium控制谷歌浏览器,打开阿里汇川登录页,登录汇川后台。 第一次写,遇到的坑比较多,三天,搞定。给自己一个棒棒~☺️ import Tkinter as tk import osimport sysimport requestsfrom sel