我有一个 Unity3D iOS 项目,我在其中使用 Game Center 和应用内购买(通过第三方插件),但是当我将 Unity3D 项目构建到 xCode 中时,在功能部分游戏中心和应用内购买被禁用.我需要在 PostProcessBuild 方法中启用它们。我尝试通过这段代码使用 xCodeApi:
string projPath = PBXProject.GetPBXProjectPath(pathToBuiltProject);
PBXProject proj = new PBXProject();
proj.ReadFromString(File.ReadAllText(projPath));
string target = proj.TargetGuidByName("Unity-iPhone");
proj.AddCapability (target, PBXCapabilityType.GameCenter);
proj.AddCapability (target, PBXCapabilityType.InAppPurchase);
File.WriteAllText(projPath, proj.ToString());
但是在此之后 xCode 无法打开创建的项目(它只是立即崩溃)。如何在不在 xCode 中手动设置的情况下添加这两个功能?
最佳答案
这是可以实现的新方法:
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEditor.iOS.Xcode;
public class CapabilityPostprocessBuild : IPostprocessBuildWithReport
{
public int callbackOrder => 999;
public void OnPostprocessBuild(BuildReport report)
{
OnPostprocessBuild(report.summary.platform, report.summary.outputPath);
}
public void OnPostprocessBuild(BuildTarget buildTarget, string path)
{
if (buildTarget == BuildTarget.iOS)
{
string projPath = PBXProject.GetPBXProjectPath(path);
PBXProject proj = new PBXProject();
proj.ReadFromFile(projPath);
ProjectCapabilityManager manager = new ProjectCapabilityManager(
projPath,
"Entitlements.entitlements",
targetGuid: proj.GetUnityMainTargetGuid()
);
manager.AddiCloud(true, false, null);
manager.WriteToFile();
}
}
}
关于ios - 在后处理中启用 Unity3D xCode 项目的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44311313/