2021年 7月 の投稿一覧

【Unity】WindowsEditorでリダイレクトを取得できるWebViewを使う

UnityでフリーのWebViewを探すと対応プラットフォームにWindowsがないことが多いです。

例えば、greeのunity-webviewではios,Android,macのみがサポートされています。

リダイレクトの取得が必要なWebViewをWindowsのEditor上で実行したいときにおすすめなのが、「WebViewHook」です。

例えばAuth0認証でトークンがリダイレクトされるようなときは、WebViewHookのLoadErrorにコールバックを設定してURLを受け取るという動作が出来ます。

【Unity】吹き出しUI

概要

テキストサイズに合わせて自動でサイズ調整をする吹き出しUIです。

LayoutGroupの設定で一時期ハマっていたのでまとめました。

続きを読む

【iOS】WebKitとキーチェーン

iOS は、サード パーティ製アプリが証明書が保存されているシステムキーチェーンにアクセスするのを防止します (Apple アプリと Safari Webview コントローラーだけがシステムキーチェーンにアクセスできます)。

Edge は WebKit フレームワークを使用して Web サイトをレンダリングします。Edge はシステムキーチェーンにアクセスできず、証明書の選択肢をユーザーに提示できません。 これは、残念ながら、Apple のアーキテクチャによる設計です。

https://docs.microsoft.com/ja-jp/microsoft-365/enterprise/microsoft-365-client-support-certificate-based-authentication?view=o365-worldwide

Microsoft公式の内容から解釈するとAppleアプリとSafariWebview コントローラーのみがアクセス可能で、WebKitのブラウザはSafariではないためキーチェーンへのアクセスが出来ないようです。

SafariWebview コントローラーの参照先が「SFSafariViewController」

となっていますが、「ASWebAuthenticationSession」も互換性がありキーチェーンにアクセスできます。

WebViewを使用して複数の証明書から選択をさせたい時は、「SFSafariViewController」「ASWebAuthenticationSession」を使用するとよさそうです。

【Unity】オクルージョンカリングについて

概要

Unityにはオクルージョンカリングの機能があり、カメラに映らないオブジェクトのレンダリングを省いてパフォーマンスを向上させています。

今回はUnityの標準機能でできることを調べました。使い方については省略しています。

続きを読む

【Unity】Editor拡張で入力した内容の保存

Editor拡張した際、IntField等で値を更新するだけでは値は保存されていません。

別途シーンの更新があって保存した場合は一緒に更新されますが、それ以外の場合はUnityを閉じたときやアプリを再生したときに値が戻ります。

そのためシーン内にいるとき、プレハブを編集するときに更新があれば保存する処理を入れる必要があります。

using UnityEditor;
using UnityEditor.SceneManagement;

public override void OnInspectorGUI()
{
    EditorGUI.BeginChangeCheck();

    // 省略
    // Instance = (クラス名)target

    if (EditorGUI.EndChangeCheck())
    {
        string path = Instance.gameObject.scene.path;
        if (path == null || !path.Contains(".unity")) { EditorUtility.SetDirty(Instance); }
        else { EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); }
    }
}

SerializeObjectを使う場合は下記になります。

using UnityEditor;


public override void OnInspectorGUI()
{
    serializedObject.Update();

    // 省略

    serializedObject.ApplyModifiedProperties();
}

【Xcode】MacOS用のプラグイン作成

概要

MacOS用のプラグイン(.bundle)の作成手順のメモです。

手順

  1. Xcodeを開いてください
  2. 「Create a new Xcode project」を選択してください
  3. 「Choose a template for your project : 」で「MultiplatformをmacOS」「Framework & LibraryをBundle」にして「Next」を選択してください
  4. プロジェクト情報を入力して「Next」を選択してください
  5. 「右クリック/New File…」で必要なスクリプトを追加してください
  6. ビルドすると「Products」の中にbundleファイルができます