《UE4游戏开发》之 《音频和语音切换不成功原因》

博客主要围绕游戏中GameUserSettings.ini的读写展开。先探讨读写是否正确,可在FConfigCacheIni::InitializeConfigSystem中打断点验证。指出打进pak包会导致读取不正确、游戏修改无效的问题,并给出三种解决办法,如加入黑名单等。

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

  1. 首先考虑GameUserSettings.ini的读写是否正确,即有没有把切换写进GameUserSettings.ini;还有就是在读取的时候,是否读正确;
  2. 验证是否读正确的方式:在FConfigCacheIni::InitializeConfigSystem中打断点,查看GConfig的值在这里插入图片描述对比ini验证是否与GameUserSettings.ini一致
  3. 可能导致GameUserSettings.ini读取不正确的原因:看源码读取优先是从pak包读取,如果pak包没有,会从非pak包读取,所以如果把GameUserSettings.ini打进pak包,则保存在Save下的GameUserSettings.ini将不会读取,即游戏中修改无效
IFileHandle* FPakPlatformFile::OpenRead(const TCHAR* Filename, bool bAllowWrite)
{
	IFileHandle* Result = NULL;
	FPakFile* PakFile = NULL;
	FPakEntry FileEntry;
	if (FindFileInPakFiles(Filename, &PakFile, &FileEntry))
	{
#if PAK_TRACKER
		TrackPak(Filename, &FileEntry);
#endif

		Result = CreatePakFileHandle(Filename, PakFile, &FileEntry);

		if (Result)
		{
			FCoreDelegates::OnFileOpenedForReadFromPakFile.Broadcast(*PakFile->GetFilename(), Filename);
		}
	}
	else
	{
		if (IsNonPakFilenameAllowed(Filename))
		{
			// Default to wrapped file
			Result = LowerLevel->OpenRead(Filename, bAllowWrite);
		}
	}
	return Result;
}
  1. 如何解决GameUserSettings.ini打进pak包,而导致游戏中修改无效:
    (1) 将GameUserSettings.ini加入黑名单,加入方式:https://zhuanlan.zhihu.com/p/245396935【坏处,暴露GameUserSettings.ini给用户】
    (2) 将GameUserSettings.ini的section加入黑名单:打开一个Save下GameUserSettings.ini的文件,将里面的section,加入到工程设置中packing设置的section黑名单,黑名单以外的不会打进pak包
    在这里插入图片描述
    (3) 不要创建DefaultGameUserSettings.ini,并在里面设置【最佳答案】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值