//
// カーソルのスクリプト(未完成)
// 作成日: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 -----
}