コガネブログ

平日更新を目標にUnityやC#などのゲーム開発アレコレを書いていきます

【Unity】Androidにおいて、ソフトウェアキーボードの文字色が白色になり、背景色と同化して見えなくなる不具合の修正方法

遭遇した環境

  • Unity 5.4.3f1

修正方法

AndroidManifest.xml の application タグに下記の記述を追加する

<application android:theme="@style/UnityThemeSelector" ...

参考サイト様

【Unity】JsonUtilityは多次元配列やジャグ配列をサポートしていない

開発環境

  • Unity 5.4.3f1
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    class ExampleClass
    {
        public int[]   list1 = new int[]{ 1,2,3,4,5 };
        public int[,]  list2 = new int[,] { { 1,2,3,4,5 }, { 1,2,3,4,5 } };
        public int[][] list3 = new int[5][];
    }

    private void Awake()
    {
        var obj  = new ExampleClass();
        var json = JsonUtility.ToJson( obj );
        Debug.Log( json );
    }
}
{"list1":[1,2,3,4,5]}

多次元配列やジャグ配列をあまり使用しない関係で知らなかったのでメモ

参考サイト様

【Unity】App Storeに掲載されるipaの容量を確認するために使用している方法

.ipaを.zipに変換して展開して
アプリ名以外のファイルをすべて選択してプロパティを見る

参考サイト様

【Unity】iOSの「CFBundleVersion」と「CFBundleShortVersionString」に紐付くパラメータ

.plist Unity
CFBundleVersion Build
CFBundleShortVersionString Version

【Unity】【NGUI】UIRoot の子オブジェクトのグローバル座標を設定する拡張メソッド

using UnityEngine;

/// <summary>
/// UIWidget 型の拡張メソッドを管理するクラス
/// </summary>
public static class UIWidgetExt
{
    /// <summary>
    /// UIRoot の子オブジェクトのグローバル座標を返します
    /// </summary>
    public static Vector3 GetGlobalPosition( this Component self )
    {
        if ( self == null ) return Vector3.zero;
        
        var transform = self.transform;
        var pos = Vector3.zero;

        while ( transform != null )
        {
            pos += transform.localPosition;
            transform = transform.parent;
        }
        
        return pos;
    }
    
    /// <summary>
    /// UIRoot の子オブジェクトのグローバル座標を設定します
    /// </summary>
    public static void SetGlobalPosition( this Component self, float x, float y )
    { 
        var globalPos = self.GetGlobalPosition();
        var localPos = self.transform.localPosition;
        var parentPos = globalPos - localPos;
        var pos = self.transform.localPosition;
        pos.x = -parentPos.x + x;
        pos.y = -parentPos.y + y;
        self.transform.localPosition = pos;
    }
}
uiWidget.SetGlobalPosition( 0, 0 );