//
    // カーソルのスクリプト(未完成)
    // 作成日:2023/09/12
    //
    using UnityEngine;
    
    public class Cursor : MonoBehaviour
    {
        // "ItemsDialog"ゲームオブジェクト
        [SerializeField] private GameObject itemsDialogObj;
    
        // "ItemButton"オブジェクト群のキャッシュ
        private GameObject[] itemButtonObj;
    
        // "RectTransform"のキャシュ
        private RectTransform rectTf;
    
        // "ItemButton"ゲームオブジェクトの数
        private int childCount;

        // ターゲットのゲームオブジェクトの"ItemsDialog"内の位置
        private Vector2 targetAncPos = Vector2.zero;
    
        // ゲームオブジェクトを取得したかのフラグ
        private bool isGeted = false;

        //----- ここから追記1  -----
        // "Input"スクリプト
        private Input input;

        // キー入力
        private Vector2 keyInput = Vector2.zero;
        //----- ここまで追記1 -----

        // Start is called before the first frame update
        private void Start()
        {
            // "RectTransform"コンポーネントを取得する
            rectTf = GetComponent<RectTransform>();

            // 【追記2】Inputスクリプトを取得する
            input = GetComponent<Input>();
        }
    
        //アイテムボタンオブジェクトを取得する
        private void GetItemButtonObjects()
        {
            // "itemsDialog"ゲームオブジェクトの子オブジェクトの数を取得する
            childCount = itemsDialogObj.transform.childCount;
    
            //ゲームオブジェクト分のメモリを確保する
            itemButtonObj = new GameObject[childCount];
    
            // "itemsDialog"ゲームオブジェクトの子オブジェクトをすべて取得する
            for (int i = 0; i < childCount; i++)
            {
                itemButtonObj[i] = itemsDialogObj.transform.GetChild(i).gameObject;
            }
        }

        private void Update()
        {
            if (isGeted == false)
            {
                //アイテムボタンオブジェクトを取得する
                GetItemButtonObjects();
    
                // 【削除】一番最初に取得したボタンの位置を取得する
                RectTransform tempRectTf = itemButtonObj[0].GetComponent<RectTransform>();
                targetAncPos = tempRectTf.anchoredPosition;
                
            }

            //----- ここから追記3 -----
            //ポイントするオブジェクト番号を変える
            targetAncPos = GetPositionOfObject(pointNum);

            // ポイントした番号のボタンの位置を取得する
            targetAncPos = GetPositionOfObject(pointNum);
            //----- ここまで追記3 -----           
    
            //取得したボタンの位置にカーソルを移動する
            rectTf.anchoredPosition = targetAncPos;
        }

        //----- ここから追記4 -----
        //ポイントするオブジェクト番号を変える
        private int ChangePointNumber()
        {
            //カーソル入力結果の取得
            keyInput = input.GetKeyInput();
    
            //ポイントする番号の移動
            pointNum = ((pointNum + (int)keyInput.x) + childCount) % childCount;

            return pointNum;
        }

        // ポイントした番号のボタンの位置を取得する
        private Vector2 GetPositionOfObject(int _pointNum)
        {
            // 一番最初に取得したボタンの位置を取得する
            RectTransform tempRectTf = itemButtonObj[_pointNum].GetComponent<RectTransform>();
            return tempRectTf.anchoredPosition;
        }
        //----- ここまで追記4 -----     
    }