//tips
嶋津様打ち合わせ
//インベントリー編集
インベントリーの削除ボタンも編集。
Clearslotメソッドを持つslotスクリプトにOnRemoveButton()を追加していく。
public void OnRemoveButton()
{
Inventory.instance.Remove(item);
}
その上でslot prefabのRemoveButtonのButtonコンポーネントを付与し、on clickにOnRemoveButton()を設定。
これによりクリックでインベントリに追加した画像を削除することができる。
インベントリにアイテムを入れるだけではなくクリックを押すとアイテムを使用できるようにしたいのでそちらも実装する。 UseItem()をslotスクリプトに実装し、Itemスクリプトの方にも関連づけられるようにしていく。
Itemスクリプトに下記を追加し、
public void Use()
{
Debug.Log(name + "を使用");
}
UseItem()をslotスクリプトに
public void UseItem()
{
if (item == null)
{
return;
}
item.Use();
}
を追加。slot prefabのItemButtonにButtonコンポーネントを追加し、UseItem()をon clickに設定し完了。
//ロビーでのinput field周りの改善
助言をいただき、input field managerオブジェクトからcanvasに付け替えたinput field managerスクリプトの改善を行う。
発生していた2つの問題(改行対応、同期対応)が解決できたので内容を記していく。
まず改行認識を別途のボタン作成で補うことにし、
if (value.IndexOf("\n") != -1)
の使用をやめた。
さらに、string value = roomname.text;部分をtextbox.text = inputField.text;に変更。
SerializeFieldで貼り付けたためかinputField.textがエラーにならずきちんと認識された。
スクリプトの修正版を下記に記載する。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class InputFieldManager : MonoBehaviour
{
//InputFieldを格納するための変数
[SerializeField]
InputField inputField;
[SerializeField]
private Text roomname;
// テキストを格納する変数
[SerializeField]
private Text textbox;
[SerializeField]
private Text sampleText;
// Start is called before the first frame update
void Start()
{
// InputFieldコンポーネントを取得
// inputField = GameObject.Find("InputField").GetComponent<InputField>();
}
//入力された名前情報を読み取ってコンソールに出力する関数
public void GetInputName()
{
// string value = roomname.text;
textbox.text = inputField.text;
// Debug.Log(value);
/*
if (value.IndexOf("\n") != -1) //認識されない
{
Debug.Log("textbox");
// テキストに入力内容を表示
textbox.GetComponent<Text>().text = value;
//入力フォームのテキストを空にする
//inputField.text = "";
// 入力できないようにする
inputField.interactable = false;
}
*/
}
public void OnSubmit()
{
Debug.Log("決定");
sampleText.text = inputField.text;
inputField.text = "";
// 入力できないようにする
inputField.interactable = false;
}
}