unityでUIを非表示にする方法
- シーンのUIの親をキャンパスにする
- 以下のコードを実行する
Canvas cv;
cv = GameObject.Find("CanvasYSC").GetComponent<Canvas>();
cv.enabled=false;
Canvasとenabledを利用することで高速に非表示にできます
unityでUIを非表示にする方法
Canvas cv;
cv = GameObject.Find("CanvasYSC").GetComponent<Canvas>();
cv.enabled=false;
Canvasとenabledを利用することで高速に非表示にできます
Unity TextMeshProをGetComponentできない問題。
新しいUnityはUIからボタンを作成するとTextMeshProがセットで子に入る
このTextMeshProはTextの進化版です。
古いUIと混同しているためかゲットコンポーネントで取得できません。
シーンのゲームオブジェクトからTextMeshProを削除しTextを追加する。
新しい機能をデフォにされると既知のコードが使えなくて不便です。
unityC#のハッシュテーブルのDictionaryは直接シリアライズできません。
Dictionaryをゲームで保存したい場合は以下の方法があります。
//using System.Collections.Generic;
//Dictionaryを二つの文字型一次配列に変換する
Dictionary<string, string> dic = new Dictionary<string, string>
{
{ "1", "いち" },
{ "2", "に" },
{ "3", "さん" }
};
//変換する配列を作成する
string[] keys = new string[dic.Keys.Count];
string[] vals = new string[dic.Values.Count];
//二つの配列に変換する
dic.Values.CopyTo(vals, 0);
dic.Keys.CopyTo(keys, 0);
Dictionary<string, string> newDic = new Dictionary<string, string>();
toDictiotnary(keys, vals, newDic);
Debug.Log(newDic["2"]);
public void toDictiotnary(string[] keys, string[] vals, Dictionary<string, string> dic)
{
if (keys.GetLength(0) == vals.GetLength(0))
{
for(int i = 0; i < keys.GetLength(0); i++)
{
dic[keys[i]] = vals[i];
}
}
}
に
ディグショナリは便利ですがC#の仕様が固いです。
ハッシュテーブルはディグショナリと互換がありますが推奨されていません。
public Dictionary<string, string> d1,d2;
ディグショナリはハッシュテーブルと互換性があるので簡単に置き換えられます。