LoginSignup
12

More than 5 years have passed since last update.

一手間かけて、UnityでiOSの64bitアプリ作成の設定をスクリプトから行う。

Posted at

iOSの64bitアプリ作成の設定を自動化したい。

iOSのアプリの64bit対応が必須となり、久しいですね。
現在UnityからiOSの64bitアプリを作成するのは非常に簡単で、
プロジェクトの設定を数カ所変えるだけで64bit対応のxcodeが吐き出されます。

ただ業務上、ブランチを切って別のプロジェクトを複数管理することになると思われます。できれば手動で変更する箇所は抑えたいところ。64bitアプリが含まれずにアプリ申請時にエラーが出るまで気づかないなんてことになると悲惨なのでビルド時にスクリプトから設定してしまえばそういうミスは起こらなくなりそうです。

ということで64bit対応周りの設定をスクリプトから行う方法を調べました。

設定箇所

UnityのiOS 64bitビルド

上記のリンクのように、設定するのですが
うちのプロジェクトではグラフィックAPIの設定も行っていますので以下のようになりました。
ただこの記事は家で書いているのでUnity5.1のパーソナル版の環境になります。
iostest.png

  1. 設定箇所(必須)
    Scripting Backend -> IL2CPP
    Archtecture -> Universal

  2. グラフィック関係(任意)
    Automatic Graphic API -> false
    Grapihic API -> OpenGL ES2
    以下の参考リンクからmetalとOpenGL es3.0がまだ安定してなそうなので(だいぶ前だが)
    コロプラUnity 5プロジェクト

  3. ipadも対応するなら(任意)
    Target Device -> iPhone and iPad

とこんな感じで設定するのですが1の箇所をスクリプトから設定する方法が最初見つかりませんでした。
いろいろ調べたらPlayerSettings.SetPropertyIntをつかってできることがわかりました。
どうも個別で設定するプロパティや関数はないようで2.3.はプロパティと関数が個別であります。

以下スクリプトです。
仮にメニューから実行できるようにしてあります。

PlayerSettingiOS.cs
using UnityEngine;
using UnityEditor;
using System.Collections;

public class PlayerSettingiOS : EditorWindow {
    [MenuItem("PlayerSettingiOS/64bitSetting")]
    public static void setIOS64bit()
    {
        // ios 64bitのユニバーサルアプリの設定
        PlayerSettings.iOS.targetDevice = iOSTargetDevice.iPhoneAndiPad;
        // 以前不具合があるとの情報があり、metalは一旦無効にしてあります。
        PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.iOS, false);
        var apis = new UnityEngine.Rendering.GraphicsDeviceType[] {            
        UnityEngine.Rendering.GraphicsDeviceType.OpenGLES2
        };
        PlayerSettings.SetGraphicsAPIs (BuildTarget.iOS, apis );
        // GetPropertyIntで調べてみるUniversal設定は2
        PlayerSettings.SetPropertyInt ("Architecture", 2, BuildTargetGroup.iOS);
        PlayerSettings.SetPropertyInt ("ScriptingBackend", (int)ScriptingImplementation.IL2CPP, BuildTargetGroup.iOS); 
    }
}

今回の肝である、ArchitectureとScriptingBackendの設定にはPlayerSettings.SetPropertyIntを使って設定します。
IDEの補完機能で探しても出てきませんので気をつけて下さい。

まとめ

今回の調査でPlayerSettings.SetPropertyIntという関数を見つけられたのが最大の成果でした。
スクリプトからアクセスできるPlayerSettingsにありそうでない場合はこれを使えば大抵の設定にアクセスできそうです。
いろいろ自動化して手動で設定する箇所は極限まで排除したいですね。

ほんと夜ご飯とかも、かわいい彼女に作ってもらって自動化したいところです。
洗い物は僕やるんでなんつって感謝と気遣いも忘れずに、、、、っていねえけどな!!!!

ということで
なにか間違いがあればよろしくお願い致します。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12