Unity中PlayerPrefs在PC上存储位置总结

本文介绍了如何在Unity编辑器下和EXE存储位置不同的情境下,正确清理PlayerPrefs数据。作者提供了使用bat命令删除特定产品在注册表中的数据的方法,并提醒了区分EditorPrefs与PlayerPrefs的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编辑器下和EXE存储位置是不同的,这也不难理解,是为了避免存储位置相同导致开发和测试冲突。

编辑器下位置:HKEY_CURRENT_USER\Software\Unity\UnityEditor\ExampleCompanyName\ExampleProductName
EXE位置:HKEY_CURRENT_USER\Software\ExampleCompanyName\ExampleProductName

因此在编辑器下写的快捷工具,调用以下方法:

PlayerPrefs.DeleteAll();
PlayerPrefs.Save();

只会清理掉编辑器下的储存信息,无法清除EXE对应的位置。

因此针对清除EXE的需求,笔者这里使用bat命令传参删除目标注册表(要注意bat中if else的写法,括号的位置、空格,否则都会一闪而过):

@echo off
set CompanyName=%1
set ProductName=%2
echo CompanyName:%CompanyName%
echo ProductName:%ProductName%
if "%CompanyName%"=="" (
	echo CompanyName is null
) else (
	if "%ProductName%"=="" (
		echo ProductName is null
	) else (
		reg delete "HKEY_CURRENT_USER\SOFTWARE\%CompanyName%\%ProductName%" /f

		echo delete %CompanyName% %ProductName% 's all PlayerPrefs Data!
	)
)

pause

再在Unity编辑器内写个快捷键:

    [MenuItem("工具/PlayerPrefs/删除本项目 PC包对应的所有PlayerPrefs信息")]
    public static void DoReset2()
    {
        string path = Application.dataPath + "/../PlayerPrefs-Tool/PC-Tool.bat";
        string companyName = Application.companyName;
        string productName = Application.productName;
        Process.Start(path, $"{companyName} {productName}");
    }

注意:在unity中还有个EditorPrefs,一定要慎用其EditorPrefs.DeleteAll()方法,会删除编辑器的一些设置!!!

参考

PlayerPrefs官方文档

### 回答1: 对于Unity保存运行时操作,可以使用Unity中提供的PlayerPrefs功能,它可以在运行时保存数据并在下次运行时恢复数据。使用PlayerPrefs可以保存基本类型、字符串和一些自定义类型。以下是示例代码: ``` // 保存数据 PlayerPrefs.SetInt("score", 100); PlayerPrefs.SetString("playerName", "Tom"); PlayerPrefs.Save(); // 恢复数据 int score = PlayerPrefs.GetInt("score"); string playerName = PlayerPrefs.GetString("playerName"); ``` 至于嵌入式实时操作系统支撑C++17运行时环境,我不太清楚您的具体需求和情境,可以提供更详细的信息吗?同时,如果您需要在Unity中使用C++代码,可以使用Unity的插件系统和Native Code Plugin功能,将C++代码编译为动态链接库并在Unity中调用。 ### 回答2: Unity是一个跨平台的游戏开发引擎,它可以创建2D和3D游戏,支持多种平台,包括PC、移动设备和主机等。对于Unity中的运行时操作,可以通过以下方式进行保存: 1.场景保存:Unity的场景是游戏中的一个环境或关卡,可以包含各种游戏对象、脚本和其他资源。在编辑器模式下,我们可以将场景中的操作保存到硬盘上的场景文件中(.unity文件)。这样,当我们重新打开项目时,可以加载之前保存的场景,继续进行编辑或运行。 2.脚本保存:Unity使用C#作为主要的脚本编程语言,我们可以使用文本编辑器(如Visual Studio)编写C#脚本,并将其保存为.cs文件。这些脚本通常用于实现游戏逻辑和功能性操作。一旦保存,脚本中的修改将被持久保存,可以在需要的时候重新加载使用。 3.资源保存:在Unity中,资源是指可重用的游戏素材,如纹理、模型、声音等。我们可以将这些资源保存到项目目录下的特定文件夹中。通过保存资源,我们可以在任何时候使用这些资源来创建、实例化对象或加载到场景中。 对于嵌入式实时操作系统,Unity同时也可以支持C 17运行时环境。嵌入式实时操作系统被广泛应用于实时交互性较高的场景,如游戏、机器人和自动化控制系统等。Unity提供了与C 17运行时环境的兼容性,使得在Unity中使用嵌入式实时操作系统成为可能。在这种情况下,可以通过Unity的引用和交互方式,将嵌入式实时操作系统与Unity进行集成,并在Unity中进行实时操作系统相关的开发和调试工作。这样,可以更方便、高效地进行实时交互性较高的游戏和应用程序的开发。 ### 回答3: Unity是一款跨平台的游戏开发引擎,它支持将游戏开发和设计的过程从嵌入式实时操作系统(RTOS)中分离出来。Unity引擎提供了多种方式来保存运行时的操作,以便在需要时进行加载和恢复。 首先,Unity提供了场景的保存和加载功能。在开发游戏时,我们可以将场景的状态保存为一个文件,其中包含了场景中所有的对象、组件和其对应的状态信息。这样,当我们需要恢复之前的游戏状态时,只需加载保存的场景文件即可。 其次,Unity还支持保存和加载游戏中的运行时数据。在游戏运行过程中,我们可以将重要的游戏数据保存在特定的位置,如本地硬盘或云端存储。这样,即使游戏关闭或设备重启,我们也能够在下次游戏运行时恢复之前的数据状态。 另外,Unity还提供了序列化和反序列化功能,允许我们将对象或数据结构转换为字节流并保存在存储设备上。通过这种方式保存的数据可以在需要时进行反序列化,以恢复对象的完整状态。 最后,Unity还支持使用PlayerPrefs来保存和加载游戏的一些设置和配置。PlayerPrefsUnity提供的一种用户偏好设置存储机制,可以保存一些简单的键值对数据。这样,我们可以在游戏中保存用户的一些个性化设置,以便在下次游戏运行时进行加载和应用。 综上所述,Unity提供了多种方式来保存运行时的操作。无论是保存场景状态、游戏数据、对象序列化还是用户设置,都可以通过Unity的相关功能进行实现。这些保存和加载的功能为游戏的长时间运行和用户体验的连续性提供了便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iningwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值