えんちゃです!
今回は、前回作成したカウントボタンに
ボタンのテキストを編集する機能とカウントする機能の二つを両方持つように作っていきます。
まずは前回作成したTextUIの上にInputField(入力できるスペース)を配置します。

今回は、ボタンで編集と入力を制御したいので、それ用のスイッチボタンを設置します。

まずスイッチボタンですが、一回押すと『カウント』、もう一度押すと『編集中』になるプログラムを書いていきます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class EditButton : MonoBehaviour
{
public Text editButton;
// Start is called before the first frame update
void Start()
{
editButton.text = "編集中";
}
public void ClickButton()
{
if (editButton.text == "編集中")
{
editButton.text = "カウント";
}
else {
editButton.text = "編集中";
}
}
}これを前回と同じ要領でスイッチボタンにアタッチし、スイッチボタンの子オブジェクトをInspectoerにドラッグ&ドロップします。
これで、ボタンを押すとスイッチボタンのテキストが変わるようになりました。

次に編集の時にはカウントできずカウントの時にはカウントが出来るプログラムを書いていきます。
このままだとクリックを押しても、InputFieldが反応し、クリック扱いになりません。
分からないときは、まずエディターで試してみましょう。
下のアニメーションのようにInput Field のチェックをスクリプト上で制御できれば、無事完成できそうです

これは
InputField.enable = true / false
で制御できます
なのでスイッチスクリプトを以下のように編集
public InputField inputfield;
public void ClickButton()
{
if (editButton.text == "編集中")
{
editButton.text = "カウント";
inputfield.enabled = false;
}
else {
editButton.text = "編集中";
inputfield.enabled = true;
}
}inputfieldはカウント子オブジェクトのInputFieldをドラッグ&ドロップ
カウントボタンも、スイッチボタンがカウントの時のみカウントするよう編集
public Text textField;
public void CountButton()
{
if (chkText.text == "カウント")
{
count++;
textField.text = count.ToString();
}
}textFieldはスイッチボタンの子オブジェクトのtextをドラッグ&ドロップ
編集中の時はカウントせず、カウントの時だけ無駄にした日数をカウントすることが出来ました。
無駄にした日数。。。
無駄にした日数。。。



コメント