ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何用Pyrite64 Prefab管理可复用N64对象:从金币到整间房间的实战技巧

如何用Pyrite64 Prefab管理可复用N64对象:从金币到整间房间的实战技巧 如何用Pyrite64 Prefab管理可复用N64对象从金币到整间房间的实战技巧【免费下载链接】pyrite64N64 Game-Engine and Editor using libdragon tiny3d项目地址: https://gitcode.com/GitHub_Trending/py/pyrite64Pyrite64是一款基于 libdragon 和 tiny3d 的 N64 游戏引擎与可视化编辑器能让你在没有官方 SDK 的情况下做出能跑在真实 N64 硬件上的 3D 游戏。其中Prefab预制件是管理可复用对象的核心机制把对象连同它的组件、子对象一起打包成模板之后随时放置任意多个实例改一次模板、处处生效。本文带你从一枚金币到一整间房间走通 Prefab 的完整工作流。为什么需要 Prefab理解模板 实例先搞清楚两个概念Prefab预制件一个可复用的对象模板。单个对象本身只是带位置的容器真正赋予它外观和行为的是一堆组件——3D 模型、碰撞体、脚本等。Prefab 把对象 全部组件 子对象一次性保存下来。Instance实例Prefab 在场景中放置出来的拷贝。它不存储内容副本只记住我指向哪个 Prefab外加你自己覆盖Override的个别数值其余一切设置都实时从模板读取。这正是 Prefab 的威力所在改模板所有未覆盖该值的实例自动同步每个实例又能各自覆盖个别参数既统一又灵活。Prefabs 作为资产Asset存储会直接出现在编辑器的 Files 资源浏览器里与其他贴图、模型并列管理。一步创建 Prefab右键 To Prefab创建 Prefab 只需要一步在场景Graph对象层级窗口中右键点击一个对象选择To Prefab。编辑器会把这个对象连同它的所有组件和子对象保存为一个新的 Prefab 资产。妙处在于场景里的原对象会立刻自动变成这个新 Prefab 的实例——它保持在原位置但从这一刻起就跟随模板走了。对应的编辑器菜单逻辑可以在 sceneGraph.cpp 中找到而 Prefab 资产的数据结构定义在 prefab.h——它保存了一个完整的Object含组件和子对象以及用于版本迁移的fileVersion字段。最快放置实例从 Files 窗口拖入视口放置实例同样简单从Files 资源浏览器中把 Prefab 直接拖进3D Viewport3D 视口一个新的实例就会生成在镜头前方并自动选中立即可用变换工具摆放位置。你可以为同一个 Prefab 放置任意多个实例它们全部保持与同一模板的链接。官方文档的完整说明见 prefabs.md。在 Graph 树中Prefab 实例的行前会显示专属的预制件标识图标一眼就能和普通对象区分开见 sceneGraph.md。单实例覆盖Override让某个拷贝与众不同假设你放置了 10 枚金币但只有一枚是金色闪光版。选中该实例直接修改它的任意数值——位置、组件内的某个参数、颜色等——就会为这一个值创建覆盖Override该值从此不再跟随 Prefab只影响这个实例你没有动过的其他设置仍照常从 Prefab 读取被覆盖的属性在检查器面板中会显示一个开锁图标的标记方便识别哪些值已经脱管。想撤销某个覆盖两种方法右键该值选择Reset to prefab或直接切换属性旁的锁图标。数值立即回归 Prefab 的值此菜单项的实现在 helper.h。编辑 Prefab 本体一次修改全部同步当你想让所有实例一起变化时比如给所有金币加一个自转动画参数不要逐个实例改选中任意一个实例点击检查器面板顶部的Edit按钮进入Prefab 编辑模式此时你在场景 Graph 中会看到该对象被红色高亮顶部菜单中央出现红色的Exit Prefab Edit按钮模式下只有 Prefab 自身的对象可被选择和修改场景其他内容全部变灰防止误改点Exit Prefab Edit或检查器中的 Back to Instance退出返回按实例编辑的状态。检查器同时会显示当前实例来自哪个 Prefab并提供直达模板编辑的按钮。嵌套 Prefab从金币到整间房间这是 Prefab 最强大的玩法。一个 Prefab 的内容可以是任意形状形态典型例子单个对象一枚金币、一个拾取物带子对象的对象一辆带轮子的小车由 Prefab 组成的对象一面墙挂着几支火把 Prefab嵌套 Prefab火把含火焰、房间含火把可任意层级嵌套实战搭建火把房间先做Coin Prefab模型 碰撞 拾取脚本放置 20 枚金币实例只覆盖个别位置——金币墙的完成成本是零做Torch Prefab里面嵌套一个Flame 子对象做Wall Prefab摆上几支 Torch 实例做Room Prefab由四面 Wall 地面组成。放置一个 Room 实例 整间房间连同所有火把一次到位。之后改 Torch 里的火焰颜色全房间、所有房间实例同步更新。嵌套还有一个值得理解的规则场景中的实例可以覆盖任意深度上的任意值包括嵌套 Prefab 内部的参数——且只影响这一个放置编辑 Prefab 本身时你能配置它内部对象和它所含 Prefab 的摆放方式但不能穿透进所包含的 Prefab 内部去改其内芯——要改内芯请直接编辑那个内层 Prefab。这让每个 Prefab 对自己的内容负责同时最终的场景摆放仍拥有全部微调权。示例项目 jam25 中就有真实资产可参考如 Coin.prefab、Bot.prefab 和 Player.prefab。Unpack Prefab把实例解包成普通对象如果某个实例不再需要跟随模板比如要把它大改成独一无二的 Boss在 Graph 中右键该实例选择Unpack Prefab实例变成普通场景对象Prefab 当前的内容被烘焙进去从此不再跟随源模板注意只解包当前这一层嵌套在里面的 Prefab 仍保持实例状态、继续链接各自的源。运行时行为零开销 动态生成两个对游戏开发很重要的事实零开销场景构建为运行时资产时所有 Prefab 会被完全解析并烘焙。运行时场景里根本不存在Prefab这个概念使用它没有任何额外性能成本——N64 只有 4MB/8MB 内存这一点尤为关键可动态生成Prefab 定义本身在运行时仍然存在C 代码中调用场景的addObject方法并按文件名 1:1 传入 Prefab 名即可动态生成嵌套 Prefab 也能正确生成子对象变换相对主对象位置计算。如果引用了不存在的 Prefab编译会直接报错——这是帮你抓 typo 的保险丝。新手速查Prefab 操作清单目标操作创建 PrefabGraph 中右键对象 →To Prefab放置实例从 Files 窗口拖入 3D Viewport单个值脱管选中实例直接改值出现开锁标记回归模板右键值 →Reset to prefab/ 切换锁图标全实例修改选中实例 → 检查器Edit进入 Prefab 编辑模式彻底解绑右键实例 →Unpack Prefab核心资料索引官方 Prefab 手册含动画演示prefabs.mdGraph 窗口操作说明sceneGraph.mdPrefab 数据结构源码prefab.h编辑器菜单实现To Prefab / Unpack PrefabsceneGraph.cpp真实 Prefab 资产示例金币、机器人、玩家n64/examples/jam25/assets/掌握这套模板 实例 覆盖的三层结构你就能用极低的成本管理 N64 项目中成百上千个重复对象——从一枚金币到一整间房间。️【免费下载链接】pyrite64N64 Game-Engine and Editor using libdragon tiny3d项目地址: https://gitcode.com/GitHub_Trending/py/pyrite64创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表