2023年11月1日水曜日

amazonフォトはプライム解約後どうなる?

amazonフォトがプライム解約後どうなるか調べてみました。

5GB以上の写真がある場合

3ヶ月間は閲覧とダウンロード可能

新規アップロードは不可

5GB以下の写真量の場合

そのまま使用できる

所感

フォロプライムは容量無制限で静止画を保存できますが

そもそも静止画を5GBも消費しません

動画だと5GB以上の保存は別料金がかかります

2023年10月19日木曜日

Unityで一文字つづ表示する一番シンプルな方法C#

 UnityのレガシーTextでも使える一文字つづ表示する一番シンプルな方法です。

ソース

private void SkipMode()

    {

StartCoroutine(Mojiokuri());

}

private string mess = "こんにちは、今日もよろしく";

private string[] words;

//コルーチン

IEnumerator Mojiokuri()

{

words = mess.Select(x => x.ToString()).ToArray();

foreach (string word in words)

{

//0.1秒ごとに1文字表示する

od.uimesse.text = od.uimesse.text + word;

yield return new WaitForSeconds(0.1f);

}

}

所感

テキストメッシュプロを使わないシンプルな方法です。

デフォで付けてほしい。

2023年10月18日水曜日

Unity Colorをシリアライズする

UniyでimageのColorクラスを保存しようとしたら以下のエラーが表示されました。

>SerializationException: Type 'UnityEngine.Color' in Assembly 'UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.

解決方法

Colorを文字型に相互変換して保存する

 public static Color ToColor(string str)

    {//文字型をカラーに変換

Color color;

if (ColorUtility.TryParseHtmlString(str, out color))

{

//変換成功

}

else

{

//変換失敗

color = Color.clear;

}


return color;


}

public static string ToStringColor(Color color)

    {

string strcolor = ColorUtility.ToHtmlStringRGB(color);


return strcolor;

}

2023年10月5日木曜日

Unity if StartsWith("")が動作しない

 StartsWithに空文字は使えません。

使用例

if (str.StartsWith(""))すべての文字をイフブロックに入れてしまう。

if (str.Equals(""))空文字だけをイフブロックに入れる。

解決方法

 StartsWithは文字列の先頭を判別してくれる関数です。

空文字の判断はEqualsを使います。

2023年9月26日火曜日

UTF-8-Macの濁点半濁点ユニコードの注意

 Macのファイル管理に使われているUTF-8-Macですが。

 UTF-8-Macは濁点自体が一つの文字として扱われています。

文字数の例

  • バイオリン  UTF-8-Macでは6文字。通常のユニコードでは5文字
  • パパイヤ  UTF-8-Macでは6文字。通常のユニコードでは4文字

注意点

 UTF-8-Macは通常のUTF-8と濁点以外互換性があります。

 UTF-8でMacのファイル名を検索すると濁点半濁点のファイルが除外されてしまいます。

検索自体は働くのでエラーが発見しにくいです。

所感

中途半端な互換性があるためバグを見落としやすいです。

Appleの独自規格は開発者の天敵です。

2023年9月11日月曜日

配列にAddListenerを使う際の注意

間違った使い方

  for (i=1:i<5:i++)

    {

        buttons[i].onClick.AddListener(() => buttonClick(i)); 

    }

五つのボタンはクリック時に引数(4)でbuttonClickが実行される

正しい使い方

for (i=1:i<5:i++)

    {

        int count = i;  //ローカル変数にいれる

        buttons[i].onClick.AddListener(() => buttonClick(count));  //引数にローカル変数使う

    }

5つのボタンは異なる引数(0〜4)で実行される

2023年9月8日金曜日

同名のオブジェクトがシーンに存在する場合のNullReferenceException:

 同名のオブジェクトがシーンに存在する場合に

複数の個所でFindからインスタンスを得ると競合してしまう


メニュー画面とセーブ画面に使われている同名のボタン(閉じるボタン)に対してクリックリスナーを設定した場合。後から設定されるクリックリスナーが適応される。

>NullReferenceException: Object reference not set to an instance of an object

YSSave.MyOnClick (System.Int32 index) (at Assets/YSSave.cs:34)

YSSave.<Start>b__4_1 () (at Assets/YSSave.cs:19)

UnityEngine.Events.InvokableCall.Invoke () (at <f1212ad1dec44ce7b7147976b91869c3>:0)

UnityEngine.Events.UnityEvent.Invoke () (at <f1212ad1dec44ce7b7147976b91869c3>:0)

UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)

UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)

UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)

UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)

UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)