[开发者心得] 常见装饰器详解

[复制链接]
101 |1
空伊伊 发表于 2024-10-28 03:20:55 | 显示全部楼层 |阅读模式
本帖最后由 空伊伊 于 2024-10-28 03:25 编辑

常见装饰器详解


装饰器介绍
装饰器是 TypeScript 中的一种特殊类型的声明,它能够附加到类、方法、访问器、属性或参数上,
装饰器的主要作用是增强类或其成员的功能。

(简单理解,装饰器是一个函数,可以通过@这个关键字附加到目标上,从而实现对目标进行一些操作)

接下来介绍口袋方舟中一些常用的内置装饰器

一、@Property()
该装饰器是一个属性装饰器,在脚本中最为常用。它接收一个对象类型 -- IPropertyOptions 作为参数,通过传入不同的参数来实现不同的功能。
这里举两个最常见的用法:
1.在属性面板上显示属性(displayName)
参考教程:自定义脚本属性 | 教程
image.png

2.属性同步(replicated)
参考教程:RPC 与 属性同步 | 教程

如果你已经打开了代码,并且看到了 IPropertyOptions 这个参数类型,
你会发现除了displayName和replicated以外,还有许多接口属性,
但其实这些属性只是改变 displayName 在属性面板上的展示方式,比如分组、提示、吸管等等。
@Property() 做主要的用途还是属性面板展示以及属性同步

注意事项:
1. @Property() 只能在继承了Script的脚本中使用。
2. 新增的属性,需要编译后才会在属性面板显示。
3. 如果属性没有给定初始值,属性面板会提示错误。
4. 装饰的属性只能是简单类型以及简单类型构成的数组和类。

二、@RemoteFunction()
该装饰器是一个函数装饰器,它可以让一个函数实现远程调用。

下面列出3个远程调用例子:
参考教程:RPC 与 属性同步 | 教程
image.png
注意事项:
1. @RemoteFunction() 只能在继承了Script的双端脚本中使用(但客户端或者单服务端,远程调用都是不生效的)
2. 服务端调用指定客户端,必须传入player,否则调用失败

三、Decorator
Decorator下有三个装饰器,下面依次介绍
1. @Decorator.persistence()
这是一个属性装饰器,用于将SubData派生类中的属性标记为永久存储属性。
参考教程:数据存储 | 教程
image.png

2. @Decorator.noReply()
这是一个函数装饰器,用于将服务端的net函数标记为无需回复。
image.png

3.@Decorator.autoExecute()
这是一个类装饰器,用于让类自动执行某个方法

注意事项:
上述三个装饰器均是模块管理的扩展内容,可以参考教程:模块管理 | 教程

四、@Serializable
这是一个类装饰器,用于让自定义类支持属性同步
相关教程:【RPC和Replicated】——Replicated介绍 口袋方舟论坛






回复

使用道具 举报

叽里咕噜小胡桃 发表于 2024-10-28 09:56:58 | 显示全部楼层
涨知识了,码住!
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表