[其他资源] 用代码创建世界UI,里面显示文字

[复制链接]
942 |0
aojoo 发表于 2023-3-23 11:07:15 | 显示全部楼层 |阅读模式
本帖最后由 aojoo 于 2023-4-25 11:39 编辑

在客户端执行

sid是世界UI创建出来后的父对象
第一步:通过sid找到父对象
第二步:创建世界UI
第三步:给世界UI设置父级(如果不设置父对象,前三步都不需要)
第四步:设置世界UI的相对位置,相对旋转,相对缩放
第五步:设置世界UI的实际渲染大小(就是UI文件里要显示的区域大小)
image.png
比如这里只需要显示文字,实际渲染大小就是400,100
第六步:创建ui,创建一个画布组件,Ui的根画布设置为rootCanvas。这几步直接复制就行了,不用改动
第七步:创建一个UI添加到画布上,这个里面设置文字的控件大小,字体大小(或者直接开启自适应文本框),文字内容

image.png
image.png (这2个图只是告诉你,尺寸大小内容对应的是什么东西,不需要在编辑器里设置)


最后一步:将自己绑定的UI设置为世界UI显示的内容,直接复制就行了,不用动
if (SystemUtil.isClient()) {
    let sid = '076CE7FB'//世界Ui的父级
    Core.GameObject.asyncFind(sid).then(go => {
        // 创建一个世界UI对象
        let worldUI = Core.GameObject.spawn({ "guid": "UIWidget" }) as Gameplay.UIWidget
        worldUI.attachToGameObject(go)//设置父级
        worldUI.setRelativeLocation(new Type.Vector(5000, 0, -445))//位置
        worldUI.setRelativeRotation(new Type.Rotation(-180, 90, 0))//旋转
        worldUI.setRelativeScale(new Type.Vector(1, 20, 20))//缩放
        worldUI.drawSize = new Type.Vector2(400, 100)//设置实际渲染大小
        // 创建ui
        let ui = UI.UserWidget.newObject();
        // 创建一个画布组件
        let rootCanvas = UI.Canvas.newObject()
        rootCanvas.size = new Type.Vector2(1920, 1080);
        rootCanvas.position = Type.Vector2.zero
        // 将Ui的根画布设置为rootCanvas
        ui.rootContent = rootCanvas
        // 创建一个UI添加到画布上
        let text = UI.TextBlock.newObject(rootCanvas)
        text.position = new Type.Vector2(0, 0)
        text.size = new Type.Vector2(400, 100)//文字的尺寸
        text.fontSize = 75//文字大小
        //text.autoAdjust = true//或者直接开启自适应文本框
        text.text = "50"//文字内容
        text.fontColor = new Type.LinearColor(1, 1, 1, 1)//字体颜色,白
        text.outlineColor = new Type.LinearColor(0, 0, 0, 1)//字体描边颜色,黑
        text.outlineSize = 3//字体描边宽度
        // 将自己绑定的UI设置为世界UI显示的内容
        worldUI.setTargetUIWidget(ui)
    })
}








回复

使用道具 举报

72小时热榜
热门版块
快速回复 返回顶部 返回列表