目录
- 如何正确设置默认名称
- 1. 修改 Xcode 项目名称
- 2. Unity 开发(如ios游戏类)
- 3. Mac 开发(macOS App)
- 配置和多语言支持
- 配置默认名称
- 代码动态修改游戏名称
- 多语言支持
- 多语言可能遇到的问题
如何正确设置默认名称
你在苹果(iOS/macOS)开发中想要设置默认的游戏名称,具体方法取决于你的开发环境和目标:
1. 修改 Xcode 项目名称
如果是使用 Xcode 开发的(例如基于 UIKit 或 SwiftUI),可以在 Info.plist 文件中设置:
CFBundleDisplayName(显示名称,出现在主屏幕)
CFBundleName(内部使用的名称)
你可以在 Info.plist 添加:
<key>CFBundleDisplayName</key>
<string>我的默认包体</string>
<key>CFBundleName</key>
<string>默认包名</string>
2. Unity 开发(如ios游戏类)
如果你的包体是基于 Unity 开发的,可以在 Unity 编辑器中:
进入 Project Settings -> Player -> iOS 选项卡
修改 Product Name
然后在 Info.plist 中,会自动同步 CFBundleDisplayName。
如果想动态修改游戏名称,可以在 PostProcessBuild 脚本中修改 Info.plist:
using UnityEditor;
using UnityEditor.Callbacks;
using System.IO;public class PostBuildProcessor {[PostProcessBuild]public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) {if (target == BuildTarget.iOS) {string plistPath = pathToBuiltProject + "/Info.plist";var plist = new UnityEditor.iOS.Xcode.PlistDocument();plist.ReadFromString(File.ReadAllText(plistPath));var rootDict = plist.root;rootDict.SetString("CFBundleDisplayName", "默认游戏名称");File.WriteAllText(plistPath, plist.WriteToString());}}
}
3. Mac 开发(macOS App)
macOS App 也使用 Info.plist:
<key>CFBundleDisplayName</key>
<string>默认Mac</string>
如果是使用 Cocoa 或 Swift,可以在 AppDelegate 中动态修改:
Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String
配置和多语言支持
配置默认名称
进入 Info.plist
文件,找到:
CFBundleDisplayName
(App 显示名称)
CFBundleName
(内部 Bundle 名称)
<key>CFBundleDisplayName</key>
<string>默认</string>
<key>CFBundleName</key>
<string>DefaultGame</string>
效果:
CFBundleDisplayName
会影响 iOS 主屏幕上的 App 名称。
CFBundleName
主要用于系统内部标识,不影响用户界面。
代码动态修改游戏名称
你希望根据某些条件更改名称,可以使用 NSUserDefaults
让包体在运行时显示不同名称:
UserDefaults.standard.set("自定义包体名", forKey: "CFBundleDisplayName")
⚠️ 注意:此方法不会修改 iOS 主屏幕上的名称,只适用于游戏内部 UI 逻辑。
多语言支持
如果你的包体有多种语言,可以使用 InfoPlist.strings 让不同语言显示不同名称:
创建 InfoPlist.strings
文件(在 Supporting Files 目录)。
添加内容:
"CFBundleDisplayName" = "默认名称";
对不同语言文件夹(如 en.lproj、zh-Hans.lproj
)创建不同版本,App 语言不同,名称也会变化。
多语言可能遇到的问题
在 Xcode 的多语言设置中,en.lproj 和 english.lproj
并不是等价的,iOS 主要识别的是标准的语言代码,如 en.lproj。具体区别如下:
-
en.lproj
标准的英语(English)语言目录,对应 iOS 语言代码 en。
适用于所有 英语变体(如果没有更具体的语言包)。
当用户的设备语言设置为 英语(English) 时(无论是美国、英国、加拿大等),如果没有更细分的 en-XX.lproj 目录,iOS 会默认使用 en.lproj。 -
english.lproj
不是标准的 iOS 语言目录名称,iOS 不会识别 它作为语言目录。
iOS 只识别符合 ISO 639-1 语言代码 规则的文件夹,如 en.lproj、fr.lproj、zh-Hans.lproj 等。
如果你的项目里有 english.lproj,它不会被 iOS 识别和使用,除非你在代码里手动指定它(但这很不常见)。
如果使用了不标准的语言目录名称,会导致部分其他语言情况下,包名显示异常问题。