クリエイティブ

UnityでSliderのRectTransformにNanが入ってしまうときの確認箇所

はじめに

UnityでSliderコンポーネントはHPとか進捗率の表示などでもよく利用するのですが、
SliderのFillのRectTransformにNanが入ってしまうことがあったので、原因についての備忘録を記載します。
Unityのバージョン : 2020.3.26f1

原因について

原因は分かってしまえば、とても初歩的なことなのですが、Sliderに割合の値を入れる際に0除算してしまっていたことが原因でした。データの設定でmaxValueの方に0が入る可能性のあるコードになってしまっていました。

using UnityEngine;
using UnityEngine.UI;

public class SliderComponent : MonoBehaviour
{
    [SerializeField] Slider _slider = null;

    void Start()
    {
        var value = 0;
        var maxValue = 0;
        
        // 0除算となりNanがスライダーのFillに設定されてしまう
        _slider.value = (float) value / maxValue;
    }
}

当方の環境では0除算で発生したNanがそのまますんなりとSliderのvalueに代入できてしまってたのとPrefabの設定に問題があると思い込んでしまっていたため、コードとデータに異常があると真っ先に思い浮かびませんでした。
また一度Nanが入るとその後の更新でいくら正しい値をSliderに代入しても元の形に戻ることはなく、Nanから戻りません。

NanがRectTransformに入ったスライダー

まとめ

  • SliderのFillのRectTransformにNanが入った場合はvalueを設定してる箇所に問題ないか確認する
  • そもそも0除算が発生しないように気を付ける
  • この記事を書いた人

あるせ

上場ゲーム会社の現役プログラマーで1児の父です。 プログラミングを始めたい方向けのライトな記事からゲーム開発の現場で得た知見まで幅広く発信します!

PickUp

1

ChatGPTを使って画像生成を行っていると、背景を透過した画像を作りたいと思うことがよくあります。ChatGPTで生成した画像に対して「背景透過してpngで書き出して」と依頼してみたのですが、背景が ...

2

問題 上記のような問題が発生し困っていました。調べたところ改行コードの問題がよくヒットしましたが、自分の場合は解決できませんでした。 原因と解決方法 原因はGit LFSを使用していたことでした。Gi ...

-クリエイティブ
-, ,