はじめに
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から戻りません。
まとめ
- SliderのFillのRectTransformにNanが入った場合はvalueを設定してる箇所に問題ないか確認する
- そもそも0除算が発生しないように気を付ける