2017-06-01 14 views
0

Unity3Dプロジェクトを、私がGame CenterとApp内購入(サードパーティのプラグインを使用)を使用する場所に持っていますが、Unity3DプロジェクトをxCode、CapabilitiesセクションGameセンターおよびアプリ内購入は無効になります。 PostProcessBuildメソッドでそれらを有効にする必要があります。後処理でUnity3D xCodeプロジェクトの機能を有効にする

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の後に(それだけでimmidietlyクラッシュ)作成したプロジェクトを開くことができません:私はこのコードを経由してxCodeApiを使用してみました。 xCodeで手動で設定することなく、これらの2つの機能を追加するにはどうすればよいですか?

答えて

2

問題は無効なprojPathであり、iCloudを有効にしなかったことです。このコードは次のように動作します:

[PostProcessBuild(999)] 
public static void AddCapabilities(BuildTarget buildTarget, string pathToBuiltProject) 
{ 
    if (buildTarget == BuildTarget.iOS) { 
    string projPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj"; 

    PBXProject proj = new PBXProject(); 
    proj.ReadFromString (File.ReadAllText (projPath)); 

    string target = proj.TargetGuidByName ("Unity-iPhone"); 

    proj.AddCapability (target, PBXCapabilityType.iCloud); 
    proj.AddCapability (target, PBXCapabilityType.GameCenter); 
    proj.AddCapability (target, PBXCapabilityType.InAppPurchase); 

    File.WriteAllText (projPath, proj.WriteToString()); 

    } 
} 

今のところ、iCloudフラグのKey-ValueストレージとCloudKitをtrueに設定するだけで問題があります。私が読んだ限りでは、資格ファイルが必要ですが、どこに見つけていいのかわかりません。助けを知っていれば、私はいくつかのコメントを感謝します。

0

あなたはkey-value格納フラグ

using XcodeUnityCapability = UnityEditor.iOS.XcodeUnity.ProjectCapabilityManager; 
public class IosPostProcessBuild : MonoBehaviour 
{ 
    [PostProcessBuild] 
    private static void PostBuildActions(BuildTarget buildTarget, string path) 
    { 
     if (buildTarget == BuildTarget.iOS) 
     { 
      string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; 
      XcodeUnityCapability projCapability = new XcodeUnityCapability(projPath, "Unity-iPhone/mmk.entitlements", "Unity-iPhone"); 

      projCapability.AddGameCenter(); 
      string[] empty = null; 
      projCapability.AddiCloud(true, false, empty); 
      projCapability.WriteToFile(); 
     } 
    } 
} 

XcodeUnityiCloud機能を追加するためにProjectCapabilityManagerを使用することができますが、名前空間の名前が変更され、あなたはここでhttps://bitbucket.org/Unity-Technologies/xcodeapi/src

からXcodeのAPIを取ることができます
関連する問題