質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

2回答

13096閲覧

unity buttonを押した回数をカウントしたい

kimutaro

総合スコア10

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2017/10/26 05:19

編集2022/01/12 10:55

私は現在Unity 5.6.2f1でスマートフォン向けのアプリケーションの作成を行なっています
そこでアプリケーションでプレイヤー自身が数字を入力するシーンを作成することになりそこで躓いています
デザインとしては

あなたの点数は  点です というTextとスペースの間に初期値として00というTextを配置しています

そして”+10” ”+1” ”Reset”というButtonを置いてあります

この00のTextを+10のボタンが置かれたら十の位に1を足し、+1のボタンが押されたら1の位に1を足し9の状態で+1を押したら繰り上がる、Resetを押したら00に戻す

という動きをするようにしたいのですが00のTextをスクリプト上で取得する方法、ボタンを押したら数字を+1するという記述が
if (Input.GetMouseButtonDown(0)) {
score = score+1;
}
というような記述でいいのかもよくわかりません、アドバイスや他にもっといいやり方などあればどうか知恵を貸していただけないでしょうか
※追記

C#

1コード 2 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6using UnityEngine.UI; 7 8public class pluspoint10 : MonoBehaviour 9{ 10 int score = 0; 11 // Use this for initialization 12 void Start () 13 { 14 15 } 16 17 // Update is called once per frame 18 void Update () 19 { 20 21 } 22 23 public void OnClick () 24 { 25 score = score + 10;//+1点のスクリプトは+1 26 Debug.Log (score); 27 } 28}

とりあえずこのようなスクリプトを作り貼り付けはしました、+1点のスクリプトも同じものを作りましたがそれぞれのscore変数を同期させるにはどうすればいいでしょうか

※追記2

アドバイス通り+1、+10、RESETの3つのボタンで数字のカウントができるようになりました、ありがとうございます
あとはシーン上の点数である00のTextとscoreの値を同期させたいのですがどうすればいいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

数値の加算は既に回答されているので追記2について回答します。

あとはシーン上の点数である00のTextとscoreの値を同期させたいのですがどうすればいいでしょうか?

C#

1//fiveHundredさんのコードから 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using UnityEngine.UI; 6 7public class PlusPoint : MonoBehaviour 8{ 9 int score = 0; 10 public Text scoreText; 11 12 public void OnClickPlusTen() 13 { 14 score = score + 10; 15 Debug.Log(score); 16 } 17 18 public void OnClickPlusOne() 19 { 20 score = score + 1; 21 Debug.Log(score); 22 } 23 24 public void OnClickReset() 25 { 26 score = 0; 27 Debug.Log(score); 28 } 29 30 void Update() 31 { 32 scoreText.text = score; 33 } 34}

ではどうでしょうか?
最初に
TextのscoreTextを宣言して、Update内で常時変更させています。

空のゲームオブジェクトを作成して、それに上のスクリプトを貼ってください。
そのゲームオブジェクトに**PlusPoint(Script)**があると思います。
その中の"Score Text"項目に、スコア表示したいテキストオブジェクトを適応させてください。

説明下手ですみません...不明な点があったら返信してください。

投稿2018/03/04 06:56

Yuki_Unity

総合スコア129

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

記載のソースだと、ボタンの外でクリックしても反応してしまいます。

以下のサイトのように、ButtonのOn Click()に関数を登録する方法がよいと思います。
http://hiyotama.hatenablog.com/entry/2015/05/11/151435


(追記を受けて追記)
この場合、全てにscore変数を持たせるのではなく、ある1つのスクリプトのみにscore変数を持たせ、他のスクリプトではこのscoreに対して参照や変更を行うようにすればよいです。
あるいは、この程度のスクリプトであれば、以下のように、クラスを分けずにまとめてしまってもよいと思います

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class PlusPoint : MonoBehaviour 7{ 8 int score = 0; 9 10 // +10点のボタンのOn Click()に登録 11 public void OnClickPlusTen() 12 { 13 score = score + 10; 14 Debug.Log(score); 15 } 16 17 // +1点のボタンのOn Click()に登録 18 public void OnClickPlusOne() 19 { 20 score = score + 1; 21 Debug.Log(score); 22 } 23 24 // ResetのボタンのOn Click()に登録 25 public void OnClickReset() 26 { 27 score = 0; 28 Debug.Log(score); 29 } 30}

投稿2017/10/26 06:00

編集2017/10/26 06:35
fiveHundred

総合スコア9778

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kimutaro

2017/10/26 06:02

ありがとうございます、とりあえずButton外で押しても反応しないようにはできました!
kimutaro

2017/10/26 07:07

追記:ありがとうございました、とりあえずコンソール上で理想の動きを確認できました
退会済みユーザー

退会済みユーザー

2018/02/20 20:55

今の状態だと、出力はint型を受け付けてるようですが、0 0というTextで扱うというのはあまり効率的ではありませんね。出力したscore変数をそのままStringに変換して代入した方が簡単なのでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問