どのような変数を用意すればボタンなどの制御が行えるようになるかを検討してみてください。
また、どのような機能を持つメソッドがあればポップアップとして機能するようになるかを考えてみてください。
CharaController スクリプトから生成されますので、Start メソッドよりは、CharaController スクリプトから実行される public 修飾子のメソッドを準備しておいた方が
必要になる情報をメソッドの引数経由で受け取ることが可能です。
必要な情報は何なのか、それを取得するにはどのような方法があるのか、といった部分も一緒に考えてみましょう。
例えば、キャラの配置を解除する、ということは、ゲーム画面においてはキャラを破壊するという処理になります。
よって、少なくとも CharaController の情報を他のスクリプトへ渡すことが出来なければ、特定のキャラを指定して破壊することは難しいでしょう。
GameManager スクリプト内には CharaController を List で管理している変数もありますので、こちらの List からも削除しないとなりません。
そのためにはこのスクリプト内で、
一連の処理を行うために準備しておくべきものは何かを考えてみるといいでしょう。
ReturnSelectCharaPopUp.cs
<= クリックすると開きます
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
[RequireComponent(typeof(CanvasGroup))]
public class ReturnSelectCharaPopUp : MonoBehaviour
{
[SerializeField]
private Button btnSubmitReturnChara;
[SerializeField]
private Button btnClosePopUp;
[SerializeField]
private CanvasGroup canvasGroup;
private CharaController charaController;
private GameManager gameManager;
/// <summary>
/// 設定
/// </summary>
/// <param name="charaController"></param>
/// <param name="gameManager"></param>
public void SetUpReturnSelectCharaPopUp(CharaController charaController, GameManager gameManager) {
this.charaController = charaController;
this.gameManager = gameManager;
btnSubmitReturnChara.interactable = false;
btnClosePopUp.interactable = false;
btnSubmitReturnChara.onClick.AddListener(OnClickSubmitReturnChara);
btnClosePopUp.onClick.AddListener(OnClickClosePopUp);
btnSubmitReturnChara.interactable = true;
btnClosePopUp.interactable = true;
}
/// <summary>
/// 配置解除する選択時
/// </summary>
private void OnClickSubmitReturnChara() {
CloseReturnCharaPopUp(true);
}
/// <summary>
/// 配置解除しない選択時
/// </summary>
private void OnClickClosePopUp() {
CloseReturnCharaPopUp(false);
}
/// <summary>
/// ポップアップを閉じて選択したボタンの結果を GameMangaer に送る
/// </summary>
private void CloseReturnCharaPopUp(bool isReturnChara) {
canvasGroup.DOFade(0, 0.5f).SetEase(Ease.Linear)
.OnComplete(() => {
gameManager.JudgeReturnChara(isReturnChara, charaController);
DestroyReturnSelectCharaPopUp();
});
}
/// <summary>
/// ポップアップを破壊
/// </summary>
private void DestroyReturnSelectCharaPopUp() {
Destroy(gameObject);
}
}
スクリプトを作成したらセーブを行います。