[开发者心得] 【单脚本】一个脚本正确设置角色头顶昵称

[复制链接]
905 |4
空伊伊 发表于 2024-1-7 17:15:23 | 显示全部楼层 |阅读模式
本帖最后由 空伊伊 于 2024-1-7 17:33 编辑

image.png
在开发阶段,由我们不能够通过电脑获取到233昵称,所以常常忽视了角色头顶昵称的设置!


下面就给大家带来一个脚本,只需要将脚本挂载到场景上,就会自动设置好头顶昵称啦~
@Component
export default class SetNickName extends Script {

    /** 当脚本被实例后,会在第一帧更新前调用此函数 */
    protected onStart(): void {

        // 如果是客户端
        if (SystemUtil.isClient()) {
            // 定义一个初始值
            let nickName = ""
            // 如果现在是编辑器环境
            if (SystemUtil.isPIE) {
                // 自定义一个值
                nickName = "现在是PIE"
            } else {
                // 如果是线上环境,则获取玩家的nickName(replace函数是为了去除空格和回车)
                nickName = AccountService.getNickName().replace(/[\r\n]/g, "")
            }

            // 向服务端发送设置名字的请求
            Event.dispatchToServer("ReqSetNickName", nickName)
        }

        // 如果是服务端
        if (SystemUtil.isServer()) {
            // 监听客户端设置名字的事件
            Event.addClientListener("ReqSetNickName", async (player: Player, nickName: string) => {
                // 获取角色
                let char = player.character
                // 等待角色加载好
                await char.asyncReady()
                // 设置角色头顶昵称
                char.displayName = nickName
            })
        }

    }
}


回复

使用道具 举报

叽里咕噜小胡桃 发表于 2024-1-7 17:18:33 | 显示全部楼层
这样写还是有很多细节没处理好啦~ 比如onStart getNickname给到服务器的时候Character还没准备好,比如有些玩家的昵称有换行,有些玩家的昵称是空字符
回复

使用道具 举报

空伊伊楼主 发表于 2024-1-7 17:20:50 | 显示全部楼层
叽里咕噜小胡桃 发表于 2024-1-7 17:18
这样写还是有很多细节没处理好啦~ 比如onStart getNickname给到服务器的时候Character还没准备好,比如有些 ...

我在服务端ready了一下character;至于空字符,换行啥的确实没考虑到哈,这两种情况会导致失败?
回复

使用道具 举报

叽里咕噜小胡桃 发表于 2024-1-7 17:22:06 | 显示全部楼层
空伊伊 发表于 2024-1-7 17:20
我在服务端ready了一下character;至于空字符,换行啥的确实没考虑到哈,这两种情况会导致失败? ...


let newNick = tempNick.replace(/[\r\n]/g, "");  不然角色头顶可以变出很多行哈哈哈~
回复

使用道具 举报

空伊伊楼主 发表于 2024-1-7 17:27:13 | 显示全部楼层
本帖最后由 空伊伊 于 2024-1-7 17:31 编辑
叽里咕噜小胡桃 发表于 2024-1-7 17:22
let newNick = tempNick.replace(/[\r\n]/g, "");  不然角色头顶可以变出很多行哈哈哈~ ...

可以的,我补上
回复

使用道具 举报

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