Shader

.GameObjects. Shader

着色器游戏对象. 这个游戏对象允许你很容易地添加一个带有自己的着色器的四边形到显示列表中,并操纵它 就像任何其他游戏对象一样,包括缩放,旋转,定位和添加到容器中.着色器 可以使用位图或几何遮罩进行遮罩,也可以用作照相机或其他设备的位图遮罩 游戏对象.它们也可以是交互式的,用于输入事件. 它的工作原理是引用着色器缓存中的 `zPhase.Display.BaseShader` 实例.这些可以 在运行时动态创建,或通过GLSL文件加载器加载: ```javascript function preload () { this.load.glsl('fire', 'shaders/fire.glsl.js'); } function create () { this.add.shader('fire', 400, 300, 512, 512); } ``` 有关动态加载和创建着色器的示例,请参见Phaser 3示例GitHub repo. 由于它们的工作方式,您不能直接更改着色器的alpha或混合模式.这应该 通过着色器代码本身中暴露的制服来处理. 默认情况下,着色器将使用一套标准的制服来创建.添加这些是为了匹配那些 在ShaderToy或GLSLSandbox等网站上可以找到,并提供着色器可能需要的通用功能, 例如时间戳,分辨率或指针位置.您可以通过指定自己的制服来替换它们 在基础着色器中. 这些着色器通过在渲染过程中暂停当前管道,创建与 这个游戏对象的大小,然后使用绑定着色器渲染一个四边形.最后,管道恢复. 因为它阻塞了管道,这意味着它将中断当前正在进行的任何批处理,所以您应该 谨慎使用这些游戏物品.如果你需要一个完全批量定制的着色器,那么请考虑使用 而是自定义管道.但是对于背景或者特殊的掩蔽效果,它们是极其有效的.

Constructor

new Shader(scene, key, xopt, yopt, widthopt, heightopt, texturesopt, textureDataopt)

Since:
  • 3.17.0
Parameters:
Name Type Attributes Default Description
scene Phaser.Scene 此游戏对象所属的场景.一个游戏对象一次只能属于一个场景.
key string | Phaser.Display.BaseShader 要从着色器缓存或基础着色器实例中使用的着色器的键.
x number <optional>
0 这个游戏对象在世界上的水平位置.
y number <optional>
0 这个游戏对象在世界上的垂直位置.
width number <optional>
128 游戏对象的宽度.
height number <optional>
128 游戏对象的高度.
textures Array.<string> <optional>
绑定到iChannel0的可选纹理键数组...3套制服.纹理必须已经存在于纹理管理器中.
textureData any <optional>
如果您想要创建无NPOT纹理的着色器,则需要附加纹理数据.

Extends

Members

active :boolean

Since:
  • 3.0.0
Inherited From:
Default Value:
  • true
此游戏对象的活动状态. 活动状态为 `true` 的游戏对象由场景更新列表处理(如果添加). 活动对象是指其逻辑和内部系统正在更新的对象.
Type:
  • boolean

angle :number

Since:
  • 3.0.0
Inherited From:
Default Value:
  • 0
这个游戏物体的角度,用度数来表示. 相位器使用右手顺时针旋转系统,其中0°为右,90°为下,180°/-180°为左 而且-90是向上的. 如果您更喜欢使用弧度,请改为使用 `rotation` 属性.
Type:
  • number

(nullable) body :Phaser.Physics.Arcade.Body|Phaser.Physics.Arcade.StaticBody|MatterJS.BodyType

Since:
  • 3.0.0
Inherited From:
Default Value:
  • null
如果这个游戏对象是为街机或物质物理学启用的,那么这个属性将包含一个对物理体的引用.
Type:

bytes :Uint8Array

Since:
  • 3.17.0
Uint8视图到顶点原始缓冲区.用于上传顶点缓冲资源到GPU.
Type:
  • Uint8Array

cameraFilter :number

Since:
  • 3.0.0
Overrides:
Default Value:
  • 0
控制此游戏对象是否由摄像机绘制的位掩码. 通常不直接设置,而是调用 `Camera.ignore` ,不过你可以 直接使用Camera.id属性设置该属性:
Type:
  • number
Example
this.cameraFilter |= camera.id..

data :Phaser.Data.DataManager

Since:
  • 3.0.0
Inherited From:
Default Value:
  • null
数据管理器. 它允许您存储,查询和获取特定于此游戏对象的密钥/值配对信息. 默认情况下为 `null` .如果使用 `getData` 或 `setData` 或 `setDataEnabled` ,则自动创建.
Type:

depth :number

Since:
  • 3.0.0
Inherited From:
场景中游戏对象的深度. 深度在某些环境中也称为 `z-index` ,允许您更改渲染顺序 游戏对象,而不实际移动它们在显示列表中的位置. 默认深度为零.深度更高的游戏对象 值总是呈现在具有较低值的值之前. 设置深度将在场景中排队深度排序事件.
Type:
  • number

displayHeight :number

Since:
  • 3.0.0
Inherited From:
此游戏对象的显示高度. 该值考虑了比例因子. 设置此值将调整游戏对象的缩放属性.
Type:
  • number

displayList :Phaser.GameObjects.DisplayList|Phaser.GameObjects.Layer

Since:
  • 3.50.0
Inherited From:
Default Value:
  • null
保存对包含此游戏对象的显示列表的引用. 当这个游戏对象被添加到一个场景或层时,它会被自动设置. 您应该将此属性视为只读.
Type:

displayOriginX :number

Since:
  • 3.0.0
Inherited From:
这个游戏对象的水平显示原点. 原点是一个介于0和1之间的规范化值. 显示原点是一个像素值,基于游戏对象的大小和原点的组合.
Type:
  • number

displayOriginY :number

Since:
  • 3.0.0
Inherited From:
该游戏对象的垂直显示原点. 原点是一个介于0和1之间的规范化值. 显示原点是一个像素值,基于游戏对象的大小和原点的组合.
Type:
  • number

displayWidth :number

Since:
  • 3.0.0
Inherited From:
此游戏对象的显示宽度. 该值考虑了比例因子. 设置此值将调整游戏对象的缩放属性.
Type:
  • number

(nullable) framebuffer :WebGLFramebuffer

Since:
  • 3.19.0
该着色器绘制到的总帐帧缓冲区的引用. 仅当您调用了 `Shader.setRenderToTexture` 时,才设置此属性.
Type:
  • WebGLFramebuffer

gl :WebGLRenderingContext

Since:
  • 3.17.0
属于渲染器的WebGL上下文.
Type:
  • WebGLRenderingContext

(nullable) glTexture :WebGLTexture

Since:
  • 3.19.0
对该着色器渲染到的网页纹理的引用. 仅当您调用了 `Shader.setRenderToTexture` 时,才设置此属性.
Type:
  • WebGLTexture

height :number

Since:
  • 3.0.0
Inherited From:
此游戏对象的原生(未缩放)高度. 更改此值不会改变游戏对象在游戏中呈现的大小. 为此,您需要设置游戏对象的比例( `setScale` )或使用 `displayHeight` 属性.
Type:
  • number

ignoreDestroy :boolean

Since:
  • 3.5.0
Inherited From:
Default Value:
  • false
如果此标志设置为 `true` ,此游戏对象将忽略对其销毁方法的所有调用. 这包括可能来自组,容器或场景本身的调用. 虽然它允许你跨场景的持续游戏对象,请理解你是完全 负责管理对此游戏对象的引用.
Type:
  • boolean

(nullable) input :Phaser.Types.Input.InteractiveObject

Since:
  • 3.0.0
Inherited From:
Default Value:
  • null
如果这个游戏对象被允许输入,那么这个属性将包含一个交互对象实例. 一般不会直接设定.而是调用 `zGameObject.SetInteractive()` .
Type:

mask :Phaser.Display.Masks.BitmapMask|Phaser.Display.Masks.GeometryMask

Since:
  • 3.0.0
Inherited From:
此游戏对象在渲染过程中使用的遮罩.
Type:

name :string

Since:
  • 3.0.0
Inherited From:
Default Value:
  • ''
此游戏对象的名称. 默认情况下是空的,Phaser从不填充,这留给开发人员使用.
Type:
  • string

originX :number

Since:
  • 3.0.0
Inherited From:
Default Value:
  • 0.5
这个游戏对象的水平原点. 原点映射游戏对象的大小和位置之间的关系. 默认值为0.5,这意味着所有游戏对象都基于其中心进行定位. 将该值设置为0意味着该位置现在与游戏对象的左侧相关.
Type:
  • number

originY :number

Since:
  • 3.0.0
Inherited From:
Default Value:
  • 0.5
这个游戏对象的垂直原点. 原点映射游戏对象的大小和位置之间的关系. 默认值为0.5,这意味着所有游戏对象都基于其中心进行定位. 将该值设置为0意味着该位置现在与游戏对象的顶部相关.
Type:
  • number

parentContainer :Phaser.GameObjects.Container

Since:
  • 3.4.0
Inherited From:
此游戏对象的父容器(如果有).
Type:

pointer :Phaser.Input.Pointer

Since:
  • 3.17.0
绑定到此着色器的指针(如果有). 通过可链接的 `setPointer` 方法设置,或直接修改该属性.
Type:

program :WebGLProgram

Since:
  • 3.17.0
该着色器使用的WebGL着色器程序.
Type:
  • WebGLProgram

(readonly) projectionMatrix :Float32Array

Since:
  • 3.17.0
着色器在渲染过程中使用的投影矩阵.
Type:
  • Float32Array

renderer :Phaser.Renderer.Canvas.CanvasRenderer|Phaser.Renderer.WebGL.WebGLRenderer

Since:
  • 3.17.0
对当前渲染器的引用. 着色器仅适用于WebGL渲染器.
Type:

renderFlags :number

Since:
  • 3.0.0
Overrides:
Default Value:
  • 15
与 `RENDER_MASK` 进行比较以确定此游戏对象是否会渲染的标志. 位为0001 | 0010 | 0100 | 1000,分别由组件可见,阿尔法,变换和纹理设置. 如果您的自定义类没有使用这些组件,那么您可以根据需要使用这个位掩码.
Type:
  • number

(readonly) renderToTexture :boolean

Since:
  • 3.19.0
一个标志,指示此着色器是否已被设置为渲染到纹理而不是显示列表. 如果你已经调用了 `Shader.setRenderToTexture` ,这个属性就是 `true` ,否则就是 `false` . 渲染到纹理的着色器不会出现在显示列表中.
Type:
  • boolean

rotation :number

Since:
  • 3.0.0
Inherited From:
Default Value:
  • 1
这个游戏对象的角度,单位为弧度. 相位器使用右手顺时针旋转系统,其中0为右,π/2为下,+-π为左 和-PI/2. 如果你更喜欢按学位工作,那就去看看 `angle` 酒店吧.
Type:
  • number

scale :number

Since:
  • 3.18.0
Inherited From:
Default Value:
  • 1
这是一个特殊的设置器,允许你设置这个游戏对象的水平和垂直比例 相同的价值,在同一时间.读取该值时,返回的结果为 `(scaleX + scaleY) / 2` . 使用此属性意味着您希望水平和垂直比例彼此相等.如果这个 如果不是这样,请改用 `scaleX` 或 `scaleY` 属性.
Type:
  • number

scaleX :number

Since:
  • 3.0.0
Inherited From:
Default Value:
  • 1
这个游戏对象的水平比例.
Type:
  • number

scaleY :number

Since:
  • 3.0.0
Inherited From:
Default Value:
  • 1
这个游戏对象的垂直比例.
Type:
  • number

scene :Phaser.Scene

Since:
  • 3.0.0
Inherited From:
对该游戏对象所属场景的引用. 游戏对象只能属于一个场景. 您应该将此属性视为只读.您不能移动 通过简单地改变游戏对象到另一个场景.
Type:

scrollFactorX :number

Since:
  • 3.0.0
Inherited From:
Default Value:
  • 1
这个游戏对象的水平滚动因子. 滚动因子控制摄像机的移动对游戏对象的影响. 当相机滚动时,它会改变游戏对象在屏幕上的渲染位置. 它不会改变游戏对象的实际位置值. 值为1意味着它将与摄像机完全同步移动. 值为0意味着它根本不会移动,即使摄像机移动. 其他值控制摄像机运动映射到此游戏对象的程度. 请注意,在以下情况下,不考虑1以外的滚动因子值 计算物理碰撞.物体总是基于它们的世界位置而碰撞,但是会改变 滚动因子是对纹理渲染位置的视觉调整,可以偏移 如果你的代码中没有说明的话.
Type:
  • number

scrollFactorY :number

Since:
  • 3.0.0
Inherited From:
Default Value:
  • 1
这个游戏对象的垂直滚动因子. 滚动因子控制摄像机的移动对游戏对象的影响. 当相机滚动时,它会改变游戏对象在屏幕上的渲染位置. 它不会改变游戏对象的实际位置值. 值为1意味着它将与摄像机完全同步移动. 值为0意味着它根本不会移动,即使摄像机移动. 其他值控制摄像机运动映射到此游戏对象的程度. 请注意,在以下情况下,不考虑1以外的滚动因子值 计算物理碰撞.物体总是基于它们的世界位置而碰撞,但是会改变 滚动因子是对纹理渲染位置的视觉调整,可以偏移 如果你的代码中没有说明的话.
Type:
  • number

shader :Phaser.Display.BaseShader

Since:
  • 3.17.0