创建 GUI 控件所添加到的全屏图层,当 foreground 为 true 时绘制在整个画布上、场景之前;adaptiveScaling 使图层随屏幕像素密度缩放。
名称、前景标志和自适应缩放标志
全屏 UI 纹理
const ui = bitbybit.babylon.gui.advancedDynamicTexture.createFullScreenUI({ name: "ui", foreground: true, adaptiveScaling: false });
const panel = bitbybit.babylon.gui.stackPanel.createStackPanel({ name: "panel", isVertical: true, spacing: 8, width: "300px", height: "400px", color: "#00000000", background: "#00000055" });
ui.addControl(panel);
创建包裹在网格上的 GUI 纹理,添加到它的控件会出现在场景中该网格的表面上;网格需要纹理坐标,通常选择平面。
width 和 height 以像素设置纹理大小,supportPointerMove 让控件响应悬停,onlyAlphaTesting 以不混合的方式绘制它。
网格、纹理尺寸以及指针、alpha、翻转和采样选项
网格上的 GUI 纹理
const plane = bitbybit.babylon.meshBuilder.createRectanglePlane({ width: 4, height: 2, sideOrientation: Bit.Inputs.BabylonMesh.sideOrientationEnum.doubleside, enableShadows: false });
const ui = bitbybit.babylon.gui.advancedDynamicTexture.createForMesh({ mesh: plane, width: 1024, height: 512, supportPointerMove: true, onlyAlphaTesting: false, invertY: true, sampling: Bit.Inputs.BabylonTexture.samplingModeEnum.trilinear });
GUI 控件绘制于其上的表面:覆盖画布的全屏层,或包裹到网格上的纹理,使控件位于 3D 场景中。每个控件都必须直接或通过容器添加到其中之一才会显示。