csharp
using UnityEditor;
using UnityEngine;
using System.Collections.Generic;
public class BundleIdentifierEditor : EditorWindow
{
// 存储选项数据
private class Option
{
public string label;
public string productName;
public string bundleIdentifierSuffix; // 仅存储后缀部分
}
private const string DefaultPrefix = "com.HappyMaster."; // 固定前缀部分
// 存储所有选项
private List<Option> options = new List<Option>();
// 当前选中的选项
private Option selectedOption;
// 初始化窗口
[MenuItem("Tools/Bundle Identifier Editor")]
public static void ShowWindow()
{
GetWindow<BundleIdentifierEditor>("Bundle Identifier Editor");
}
private void OnEnable()
{
// 默认选项(可以修改或删除)
options.Add(new Option { label = "Option 1", productName = "影片播控", bundleIdentifierSuffix = "VideoControl" });
options.Add(new Option { label = "Option 2", productName = "影片服务端", bundleIdentifierSuffix = "VideoServer" });
// 默认选中第一个选项
selectedOption = options[0];
}
private void OnGUI()
{
GUILayout.Label("选择并修改产品名称和捆绑标识符", EditorStyles.boldLabel);
// 创建可选的选项
for (int i = 0; i < options.Count; i++)
{
Option option = options[i];
bool isSelected = selectedOption == option;
if (GUILayout.Toggle(isSelected, option.label))
{
selectedOption = option;
}
}
// 显示当前选中的选项的产品名和捆绑标识符
if (selectedOption != null)
{
GUILayout.Space(10);
GUILayout.Label("当前选项: " + selectedOption.label, EditorStyles.boldLabel);
selectedOption.productName = EditorGUILayout.TextField("Product Name", selectedOption.productName);
selectedOption.bundleIdentifierSuffix = EditorGUILayout.TextField("Bundle Identifier Suffix", selectedOption.bundleIdentifierSuffix);
// 应用按钮
if (GUILayout.Button("Apply Changes"))
{
ApplyChanges();
}
}
// 添加新选项按钮
GUILayout.Space(10);
if (GUILayout.Button("Add New Option"))
{
AddNewOption();
}
}
private void ApplyChanges()
{
if (selectedOption != null)
{
// 拼接默认前缀和用户提供的后缀
string bundleIdentifier = DefaultPrefix + selectedOption.bundleIdentifierSuffix;
// 应用到 PlayerSettings
PlayerSettings.productName = selectedOption.productName;
PlayerSettings.applicationIdentifier = bundleIdentifier;
Debug.Log($"Product Name set to: {selectedOption.productName}");
Debug.Log($"Bundle Identifier set to: {bundleIdentifier}");
}
}
private void AddNewOption()
{
// 新建一个选项,使用默认名称和标识符
Option newOption = new Option
{
label = "Option " + (options.Count + 1),
productName = "NewProduct",
bundleIdentifierSuffix = "NewProduct"
};
// 添加到选项列表
options.Add(newOption);
}
}