创造你的世界
玩家与角色:提示

隐藏和显示ZEPETO角色外观

3
使用渲染器方法 您可以禁用zepeto角色的渲染器,使其对相机不可见。 以下是一个示例代码,可以通过按下按钮来隐藏和显示角色的外观。 1\) 创建层级 > 创建空对象并将其重命名为hideshowcharacter。 2\) 创建项目 > 创建 > zepeto > typescript并将其重命名为hideshowcharacter。 3\) 将脚本添加到hideshowcharacter对象。 4\) 按如下所示编写示例脚本。 hideshowcharacter import { renderer } from 'unityengine'; import { button } from 'unityengine ui'; import { spawninfo, zepetoplayers } from 'zepeto character controller'; import { zepetoscriptbehaviour } from 'zepeto script'; export default class hideshowcharacter extends zepetoscriptbehaviour { public hidecharacterbtn button; public showcharacterbtn button; start() { zepetoplayers instance onaddedlocalplayer addlistener(() => { this hidecharacterbtn onclick addlistener(() => { // 禁用zepeto角色的渲染器,使其对相机不可见 zepetoplayers instance localplayer zepetoplayer character getcomponentsinchildren\<renderer>() foreach(r => { r enabled = false; console log("隐藏"); }); }); this showcharacterbtn onclick addlistener(() => { zepetoplayers instance localplayer zepetoplayer character getcomponentsinchildren\<renderer>() foreach(r => { r enabled = true; console log("显示"); }); }); }); } } 5\) 使用画布 > 按钮将每个按钮添加到屏幕并将其分配给脚本检查器。 6\) 按下 \[▶︎(播放)] 按钮以运行它。 更改角色的层以处理隐藏 除了禁用角色的渲染器外,您还可以隐藏和显示角色的外观。 这是通过利用zepeto相机中的剔除遮罩完成的。 剔除遮罩允许您将特定层视为不可见。 当创建zepeto角色时,默认情况下没有设置任何层。 以下示例代码展示了如何在zepeto相机中使特定层不可见,然后在单击按钮时更改zepeto角色的层以隐藏和显示它。 import { zepetoscriptbehaviour } from 'zepeto script'; import { camera, layermask, transform } from "unityengine"; import { zepetocharacter, zepetoplayers } from "zepeto character controller"; import { button } from "unityengine ui"; // 一个更改角色所有子对象层的函数 function changelayersrecursively(transform transform, layer string, fromlayer? string) void { if (!transform || !layer || layer length === 0) { return; } if (fromlayer) { if (transform gameobject layer === layermask nametolayer(fromlayer)) { transform gameobject layer = layermask nametolayer(layer); } } else { transform gameobject layer = layermask nametolayer(layer); } for (let i = 0; i < transform childcount; i++) { let child = transform getchild(i); changelayersrecursively(child, layer, fromlayer); } } export default class changecameralayer extends zepetoscriptbehaviour { private zepetocamera camera; public hidecharacterbtn button; public showcharacterbtn button; start() { zepetoplayers instance onaddedlocalplayer addlistener(() => { let character = zepetoplayers instance localplayer zepetoplayer character; this zepetocamera = zepetoplayers instance localplayer zepetocamera camera; // 将层添加到剔除遮罩 this zepetocamera cullingmask |= (1 << layermask nametolayer("player")); // 从剔除遮罩中移除层 this zepetocamera cullingmask &= (1 << layermask nametolayer("transparentfx")); this hidecharacterbtn onclick addlistener(() => { this sethiddenlayer(character); }); this showcharacterbtn onclick addlistener(() => { this setplayerlayer(character); }); }); } setplayerlayer(playerobject zepetocharacter) { changelayersrecursively(playerobject transform, "player"); } sethiddenlayer(playerobject zepetocharacter) { changelayersrecursively(playerobject transform, "transparentfx"); } }