跳转至

Box3RGBAColor / GameRGBAColor RGBA颜色

这是一个服务端API

该API仅在服务端脚本使用

查阅官方文档
查阅官方文档(Arena)
查阅社区文档(Arena)
Box3RGBAColor / GameRGBAColor 是表示RGBA颜色的一个类,包含透明度

构造函数

Box3RGBAColor(r: number, g: number, b: number, a: number): Box3RGBAColor
GameRGBAColor(r: number, g: number, b: number, a: number): GameRGBAColor
创建一个RGBA颜色

示例
new Box3RGBAColor(0, 0, 0, 1) // 黑色
new Box3RGBAColor(1, 1, 1, 1) // 白色
new Box3RGBAColor(1, 0, 0, 1) // 红色
new Box3RGBAColor(0, 1, 0, 1) // 绿色
new Box3RGBAColor(0, 0, 1, 1) // 蓝色
new Box3RGBAColor(1, 1, 0, 1) // 黄色
new Box3RGBAColor(0, 1, 1, 1) // 青色
new Box3RGBAColor(1, 0, 1, 1) // 紫色
new Box3RGBAColor(0, 0, 0, 0.5) // 黑色,但是半透明
new GameRGBAColor(0, 0, 0, 1) // 黑色
new GameRGBAColor(1, 1, 1, 1) // 白色
new GameRGBAColor(1, 0, 0, 1) // 红色
new GameRGBAColor(0, 1, 0, 1) // 绿色
new GameRGBAColor(0, 0, 1, 1) // 蓝色
new GameRGBAColor(1, 1, 0, 1) // 黄色
new GameRGBAColor(0, 1, 1, 1) // 青色
new GameRGBAColor(1, 0, 1, 1) // 紫色
new GameRGBAColor(0, 0, 0, 0.5) // 黑色,但是半透明

取值范围

一般情况下,rgba的取值范围均为0 ~ 1
但在特点情况下(例如客户端代码),rgba的取值范围均为0 ~ 255

常用

set copy clone

属性

属性 类型 说明
r number 颜色的红色值
g number 颜色的绿色值
b number 颜色的蓝色值
a number 颜色的不透明度

方法

说明

下列全部[示例]的代码后面的注释为预期的运行结果,可以不用看“<~”,这只是一个提示符

set (r: number, g: number, b: number, a: number): Box3RGBAColor
set (r: number, g: number, b: number, a: number): GameRGBAColor
设置RGB颜色的值
示例
new Box3RGBAColor(0, 0, 0, 0).set(1, 1, 0, 1) // <~ { r: 1, g: 1, b: 0, a: 1 }
new Box3RGBAColor(0.1, 0.2, 0.3, 0.4).set(0.2, 0.4, 0.6, 0.8) // <~ { r: 0.2, g: 0.4, b: 0.6, a: 0.8 }
new Box3RGBAColor().set(0.5, 0.5, 0.5, 0.5) // <~ { r: 0.5, g: 0.5, b: 0.5, a:0.5 }
new GameRGBAColor(0, 0, 0, 0).set(1, 1, 0, 1) // <~ { r: 1, g: 1, b: 0 }
new GameRGBAColor(0.1, 0.2, 0.3, 0.4).set(0.2, 0.4, 0.6, 0.8) // <~ { r: 0.2, g: 0.4, b: 0.6, a:0.8 }
new GameRGBAColor().set(0.5, 0.5, 0.5, 0.5) // <~ { r: 0.5, g: 0.5, b: 0.5, a:0.5 }
copy (c: Box3RGBAColor): Box3RGBAColor
copy (c: GameRGBAColor): GameRGBAColor
将一个RGB颜色的值复制到该RGB颜色颜色中
示例
new Box3RGBAColor(0, 0, 0, 0).copy(new Box3RGBAColor(1, 1, 0)) // <~ { r: 1, g: 1, b: 0 }
new Box3RGBAColor(0.1, 0.2, 0.3, 0).copy(new Box3RGBAColor(0.2, 0.4, 0.6)) // <~ { r: 0.2, g: 0.4, b: 0.6 }
new Box3RGBAColor().copy(new Box3RGBAColor(0.5, 0.5, 0.5)) // <~ { r: 0.5, g: 0.5, b: 0.5 }
new GameRGBAColor(0, 0, 0, 0).copy(new GameRGBAColor(1, 1, 0, 1)) // <~ { r: 1, g: 1, b: 0, a: 1 }
new GameRGBAColor(0.1, 0.2, 0.3, 0).copy(new GameRGBAColor(0.2, 0.4, 0.6, 0.8)) // <~ { r: 0.2, g: 0.4, b: 0.6, a: 0.8 }
new GameRGBAColor().copy(new GameRGBAColor(0.5, 0.5, 0.5, 0.5)) // <~ { r: 0.5, g: 0.5, b: 0.5, a: 0.5 }
clone (): Box3RGBAColor
clone (): GameRGBAColor
复制该RGB颜色
示例
new Box3RGBAColor(1, 1, 1, 1).clone() // <~ { r: 1, g: 1, b: 1, a: 1 }
new GameRGBAColor(1, 1, 1, 1).clone() // <~ { r: 1, g: 1, b: 1, a: 1 }
add (rgba: Box3RGBAColor): Box3RGBAColor
add (rgba: GameRGBAColor): GameRGBAColor
将这个RGB颜色的值加上另一个RGB颜色的值,返回结果

此方法不会改变原来的RGBA颜色

示例
new Box3RGBAColor(0.1, 0.1, 0.1, 0.1).add(new Box3RGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0.2, g: 0.2, b: 0.2, a: 0.2 }
new GameRGBAColor(0.1, 0.1, 0.1, 0.1).add(new GameRGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0.2, g: 0.2, b: 0.2, a: 0.2 }
sub (rgba: Box3RGBAColor): Box3RGBAColor
sub (rgba: GameRGBAColor): GameRGBAColor
将这个RGB颜色的值加上另一个RGB颜色的值,返回结果

此方法不会改变原来的RGBA颜色

示例
new Box3RGBAColor(0.1, 0.1, 0.1, 0.1).sub(new Box3RGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0, g: 0, b: 0, a: 0 }
new GameRGBAColor(0.1, 0.1, 0.1, 0.1).sub(new GameRGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0, g: 0, b: 0, a: 0 }
mul (rgba: Box3RGBAColor): Box3RGBAColor
mul (rgba: GameRGBAColor): GameRGBAColor
将这个RGB颜色的值加上另一个RGB颜色的值,返回结果

此方法不会改变原来的RGBA颜色

示例
new Box3RGBAColor(0.1, 0.1, 0.1, 0.1).mul(new Box3RGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0.01, g: 0.01, b: 0.01, a: 0.01 }
new GameRGBAColor(0.1, 0.1, 0.1, 0.1).mul(new GameRGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0.01, g: 0.01, b: 0.01, a: 0.01 }
div (rgba: Box3RGBAColor): Box3RGBAColor
div (rgba: GameRGBAColor): GameRGBAColor
将这个RGB颜色的值除以另一个RGB颜色的值,返回结果

此方法不会改变原来的RGBA颜色

示例
new Box3RGBAColor(0.1, 0.1, 0.1, 0.1).div(new Box3RGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 1, g: 1, b: 1, a: 1 }
new GameRGBAColor(0.1, 0.1, 0.1, 0.1).div(new GameRGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 1, g: 1, b: 1, a: 1 }
addEq (rgba: Box3RGBAColor): Box3RGBAColor
addEq (rgba: GameRGBAColor): GameRGBAColor
将这个RGB颜色的值加上另一个RGB颜色的值,返回结果

此方法会改变原来的RGBA颜色

示例
new Box3RGBAColor(0.1, 0.1, 0.1, 0.1).addEq(new Box3RGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0.2, g: 0.2, b: 0.2, a: 0.2 }
new GameRGBAColor(0.1, 0.1, 0.1, 0.1).addEq(new GameRGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0.2, g: 0.2, b: 0.2, a: 0.2 }
subEq (rgba: Box3RGBAColor): Box3RGBAColor
subEq (rgba: GameRGBAColor): GameRGBAColor
将这个RGB颜色的值加上另一个RGB颜色的值,返回结果

此方法会改变原来的RGBA颜色

示例
new Box3RGBAColor(0.1, 0.1, 0.1, 0.1).subEq(new Box3RGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0, g: 0, b: 0, a: 0 }
new GameRGBAColor(0.1, 0.1, 0.1, 0.1).subEq(new GameRGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0, g: 0, b: 0, a: 0 }
mulEq (rgba: Box3RGBAColor): Box3RGBAColor
mulEq (rgba: GameRGBAColor): GameRGBAColor
将这个RGB颜色的值加上另一个RGB颜色的值,返回结果

此方法会改变原来的RGBA颜色

示例
new Box3RGBAColor(0.1, 0.1, 0.1, 0.1).mulEq(new Box3RGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0.01, g: 0.01, b: 0.01, a: 0.01 }
new GameRGBAColor(0.1, 0.1, 0.1, 0.1).mulEq(new GameRGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 0.01, g: 0.01, b: 0.01, a: 0.01 }
divEq (rgba: Box3RGBAColor): Box3RGBAColor
divEq (rgba: GameRGBAColor): GameRGBAColor
将这个RGB颜色的值除以另一个RGB颜色的值,返回结果

此方法会改变原来的RGBA颜色

示例
new Box3RGBAColor(0.1, 0.1, 0.1, 0.1).divEq(new Box3RGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 1, g: 1, b: 1, a: 1 }
new GameRGBAColor(0.1, 0.1, 0.1, 0.1).divEq(new GameRGBAColor(0.1, 0.1, 0.1, 0.1)) // <~ { r: 1, g: 1, b: 1, a: 1 }
lerp (rgba: Box3RGBAColor, n: number): Box3RGBAColor
lerp (rgba: GameRGBAColor, n: number): GameRGBAColor

插值函数,类似于取平均值
可以理解为,以该颜色为起点,rgba为终点的平滑色块,取n处的颜色 === "旧版编辑器" | 参数 | 类型 | 说明 | | :- | :- | :- | | rgba | Box3RGBAColor | 终点颜色 | | n | number | 插值位置,范围0~1 | === "Arena 编辑器" | 参数 | 类型 | 说明 | | :- | :- | :- | | rgba | GameRGBAColor | 终点颜色 | | n | number | 插值位置,范围0~1 |

此方法不会改变原来的RGBA颜色

示例
new Box3RGBAColor(0, 0, 0, 1).lerp(new Box3RGBAColor(1, 1, 1, 0), 0.5) // <~ { r: 0.5, g: 0.5, b: 0.5, a: 0.5 }
new Box3RGBAColor(0, 0, 0, 1).lerp(new Box3RGBAColor(1, 1, 1, 0), 0.25) // <~ { r: 0.25, g: 0.25, b: 0.25, a: 0.75 }
new Box3RGBAColor(0, 0, 0, 0.5).lerp(new Box3RGBAColor(0.5, 0.5, 0.5, 0), 0.5) // <~ { r: 0.25, g: 0.25, b: 0.25, a: 0.25 }
new GameRGBAColor(0, 0, 0, 1).lerp(new Box3RGBAColor(1, 1, 1, 0), 0.5) // <~ { r: 0.5, g: 0.5, b: 0.5, a: 0.5 }
new GameRGBAColor(0, 0, 0, 1).lerp(new Box3RGBAColor(1, 1, 1, 0), 0.25) // <~ { r: 0.25, g: 0.25, b: 0.25, a: 0.75 }
new GameRGBAColor(0, 0, 0, 0.5).lerp(new Box3RGBAColor(0.5, 0.5, 0.5, 0), 0.5) // <~ { r: 0.25, g: 0.25, b: 0.25, a: 0.25 }
blendEq (rgb: Box3RGBColor): Box3RGBColor
blendEq (rgb: GameRGBColor): GameRGBColor
混合颜色 可以理解为,将rgbRGB颜色上盖一层该RGBA颜色的颜色

注意结果为Box3RGBColor / GameRGBColor

此方法不会改变原来的RGBA颜色

示例
new Box3RGBAColor(0, 0, 0, 1).blendEq(new Box3RGBColor(1, 0, 0)) // <~ { r: 0, g: 0, b: 0 }
new Box3RGBAColor(0, 0, 0, 0).blendEq(new Box3RGBColor(1, 0, 0)) // <~ { r: 1, g: 0, b: 0 }
new Box3RGBAColor(0, 0, 0, 0.5).blendEq(new Box3RGBColor(1, 0, 0)) // <~ { r: 0.5, g: 0, b: 0 }
new Box3RGBAColor(0.5, 0, 0, 0.5).blendEq(new Box3RGBColor(1, 0, 0)) // <~ { r: 0.75, g: 0, b: 0 }
new Box3RGBAColor(1, 1, 0, 0.5).blendEq(new Box3RGBColor(1, 0, 0)) // <~ { r: 1, g: 0.5, b: 0 }
new GameRGBAColor(0, 0, 0, 1).blendEq(new GameRGBColor(1, 0, 0)) // <~ { r: 0, g: 0, b: 0 }
new GameRGBAColor(0, 0, 0, 0).blendEq(new GameRGBColor(1, 0, 0)) // <~ { r: 1, g: 0, b: 0 }
new GameRGBAColor(0, 0, 0, 0.5).blendEq(new GameRGBColor(1, 0, 0)) // <~ { r: 0.5, g: 0, b: 0 }
new GameRGBAColor(0.5, 0, 0, 0.5).blendEq(new GameRGBColor(1, 0, 0)) // <~ { r: 0.75, g: 0, b: 0 }
new GameRGBAColor(1, 1, 0, 0.5).blendEq(new GameRGBColor(1, 0, 0)) // <~ { r: 1, g: 0.5, b: 0 }
equals (rgba: Box3RGBAColor): boolean
equals (rgba: GameRGBAColor): boolean
判断该RGB颜色是否和另一个颜色的值相等
容差为0.000001

此处与官方API不符

该文档没有tolerance: number参数

此处与社区API不符

该文档没有tolerance: number参数

经 2024/7/18 测试:该文档内容无问题

new GameRGBAColor(0.5, 0.5, 0.5, 0.5).equals(new GameRGBAColor(0.6, 0.5, 0.5, 0.5), 1) // <~ false
new GameRGBAColor(0.5, 0.5, 0.5, 0.5).equals(new GameRGBAColor(0.5, 0.5, 0.5, 0.6), 1) // <~ false
示例
new Box3RGBAColor(0.1, 0.1, 0.1, 0.5).equals(new Box3RGBAColor(0.1, 0.1, 0.1, 0.5)) // <~ true
new Box3RGBAColor(0.1, 0.1, 0.1, 0.5).equals(new Box3RGBAColor(0.100001, 0.1, 0.1, 0.5)) // <~ false
new Box3RGBAColor(0.1, 0.1, 0.1, 0.5).equals(new Box3RGBAColor(0.1000001, 0.1, 0.1, 0.5)) // <~ true
new Box3RGBAColor(0.1, 0.1, 0.1, 0.5).equals(new Box3RGBAColor(0.1000009999, 0.1, 0.1, 0.5)) // <~ true
new Box3RGBAColor(0.1, 0.1, 0.1, 0.5).equals(new Box3RGBAColor(0.1, 0.1, 0.1, 0.500001)) // <~ false
new Box3RGBAColor(0.1, 0.1, 0.1, 0.5).equals(new Box3RGBAColor(0.1, 0.1, 0.1, 0.5000009999)) // <~ true
new GameRGBAColor(0.1, 0.1, 0.1, 0.5).equals(new GameRGBAColor(0.1, 0.1, 0.1, 0.5)) // <~ true
new GameRGBAColor(0.1, 0.1, 0.1, 0.5).equals(new GameRGBAColor(0.100001, 0.1, 0.1, 0.5)) // <~ false
new GameRGBAColor(0.1, 0.1, 0.1, 0.5).equals(new GameRGBAColor(0.1000001, 0.1, 0.1, 0.5)) // <~ true
new GameRGBAColor(0.1, 0.1, 0.1, 0.5).equals(new GameRGBAColor(0.1000009999, 0.1, 0.1, 0.5)) // <~ true
new GameRGBAColor(0.1, 0.1, 0.1, 0.5).equals(new GameRGBAColor(0.1, 0.1, 0.1, 0.500001)) // <~ false
new GameRGBAColor(0.1, 0.1, 0.1, 0.5).equals(new GameRGBAColor(0.1, 0.1, 0.1, 0.5000009999)) // <~ true
toString (): string
将这个RGBA颜色转换成字符串
示例
JSON.stringify(new Box3RGBAColor(1, 0, 0, 0.75).toString()) // <~ "{ r:1, g:0, b:0, a:0.75 }"
JSON.stringify(new GameRGBAColor(1, 0, 0, 0.75).toString()) // <~ "{ r:1, g:0, b:0, a:0.75 }"
toRGB (): Box3RGBAColor
toRGB (): GameRGBAColor
将这个RGBA颜色转换成RGB颜色

你被骗了!

这只是一个假象的方法
这么写的目的是提醒你,Box3RGBAColor / GameRGBAColor并没有这个方法!

评论区