ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

SaveGameFree 网格与特殊类型存档:MeshSave 等类型的正确打开方式

SaveGameFree 网格与特殊类型存档:MeshSave 等类型的正确打开方式 SaveGameFree 网格与特殊类型存档MeshSave 等类型的正确打开方式【免费下载链接】SaveGameFreeSave Game Free is a free and simple but powerful solution for saving and loading game data in unity.项目地址: https://gitcode.com/gh_mirrors/sa/SaveGameFreeSaveGameFree 是一款免费、简单却功能强大的 Unity 游戏数据存档插件它不仅能保存整数、字符串等基础数据还专门为网格Mesh与特殊数据类型提供了专属的存档类型Types。很多新手在尝试保存 Mesh、Vector3、Quaternion 时常常报错其实只要掌握 MeshSave 等特殊存档类型的正确打开方式就能轻松搞定。本文将带你快速上手 SaveGameFree 的网格与特殊类型存档全程零基础友好。![SaveGameFree Unity网格存档插件宣传图](https://raw.gitcode.com/gh_mirrors/sa/SaveGameFree/raw/1a1a4c4e9873667272a5fc889b27429e4c09cdd7/Assets/BayatGames/SaveGameFree/PressKit/Unity Social Media Images - Facebook-01.png?utm_sourcegitcode_repo_files)为什么 Mesh 等特殊类型不能直接存档Unity 的Mesh、Vector3、Quaternion等类型并不是普通的数据容器它们包含大量运行时对象与复杂结构。直接用SaveGame.SaveMesh(...)往往无法被序列化器正确识别导致保存失败或数据损坏。SaveGameFree 的解决方案非常巧妙在 Runtime/Types/ 目录下提供了一套「存档专用类型」它们是纯数据类只存放关键数值因此可以被 JSON、XML、Binary 任意序列化器正常读写。SaveGameFree 特殊存档类型一览 打开 Runtime/Types/ 文件夹你会发现 7 个基础存档类型存档类型保存的数据对应 Unity 类型Vector2Savex、yVector2Vector3Savex、y、zVector3Vector4Savex、y、z、wVector4QuaternionSavex、y、z、wQuaternion旋转ColorSaver、g、b、aColorColor32Saver、g、b、a字节Color32MeshSave顶点、三角形、UV 等Mesh这些类型都实现了与 Unity 原生类型之间的隐式转换例如 Vector3Save.cs 可以直接把Vector3当成Vector3Save使用反之亦然几乎感觉不到转换的存在。MeshSave 网格存档的正确打开方式 ️MeshSave.cs 是本次的主角它把一张网格拆解成六个纯数据字段vertices顶点Vector3Save[]triangles三角形索引int[]uv纹理坐标Vector2Save[]normals法线Vector3Save[]colors顶点颜色colors3232 位顶点颜色得益于隐式转换保存网格只需两行代码using Bayat.Unity.SaveGameFree; using Bayat.Unity.SaveGameFree.Types; // 保存网格Mesh 自动转为 MeshSave SaveGame.SaveMeshSave(myMesh, meshFilter.mesh); // 读取网格MeshSave 自动转回 Mesh Mesh loadedMesh SaveGame.LoadMeshSave(myMesh, null);读取时传入默认值null即使存档不存在也不会崩溃。加载后把loadedMesh赋给MeshFilter即可恢复一个完整的模型非常适合保存「玩家自定义建造」或「程序化生成地形」等玩法数据。位置、旋转、颜色等特殊类型存档怎么做保存位置、旋转、缩放是 Unity 中最常见的需求SaveGameFree 也提供了对应的存档类型。官方示例 ExampleSavePosition.cs 演示了标准写法// 保存直接把 Transform.position 传进去即可 SaveGame.SaveVector3Save(identifier, target.position); // 读取用 Vector3.zero 作为默认值避免空引用 target.position SaveGame.LoadVector3Save(identifier, Vector3.zero);旋转同样简单QuaternionSave与Quaternion之间可直接转换SaveGame.SaveQuaternionSave(rotation, transform.rotation); transform.rotation SaveGame.LoadQuaternionSave(rotation, Quaternion.identity);颜色、向量等类型的使用方式完全一致全部在 Types 目录中源码逻辑清晰非常适合初学者阅读学习。存档格式与存储位置如何选择SaveGameFree 的核心 API 在 SaveGame.cs默认使用 JSON 序列化器、UTF-8 编码、PersistentDataPath存储路径。你可以在保存时按需切换三种格式JSON可读性好方便调试与修改存档XML结构严谨适合跨程序交换数据Binary体积小、速度快适合大型存档例如手动切换为二进制格式SaveGame.Serializer new SaveGameBinarySerializer();想进一步了解底层实现可以查看 Serializers 与 Encoders 目录接口设计清晰扩展自定义序列化器也不难。更省事的方案SaveGameAuto 自动存档组件 ⚡如果你只是想让游戏对象自动保存位置、旋转和缩放SaveGameFree 还提供了 SaveGameAuto.cs 组件。把它挂到任意物体上填写位置、旋转、缩放的标识符再选择 JSON、XML 或 Binary 格式即可在退出游戏时自动保存、启动时自动恢复连代码都不用写。动手实践从示例场景开始 项目内置了 5 个示例场景位于 Samples~/ 目录包括Save Position位置、Save Rotation旋转、Save Scale缩放、Save Custom自定义数据和Auto Save自动存档。直接打开场景运行就能直观感受特殊类型存档的效果。获取完整源码只需一条命令git clone https://gitcode.com/gh_mirrors/sa/SaveGameFree结语 ✨SaveGameFree 的网格与特殊类型存档并没有想象中复杂记住「用 Save 类型装 Unity 原生类型」这一核心原则配合隐式转换MeshSave、Vector3Save、QuaternionSave 都能在几行代码内完成保存与加载。下次再遇到「网格存不下来」的问题记得先把它转成 MeshSave 试试【免费下载链接】SaveGameFreeSave Game Free is a free and simple but powerful solution for saving and loading game data in unity.项目地址: https://gitcode.com/gh_mirrors/sa/SaveGameFree创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表