質問編集履歴

2

コードの追加

2019/07/13 13:33

投稿

Tasukete_dava
Tasukete_dava

スコア12

test CHANGED
File without changes
test CHANGED
@@ -5,6 +5,8 @@
5
5
  (超簡単なテキスト制御3)
6
6
 
7
7
  を使用して、某RPG(sfc版ドラゴン…3風)のテキストメッセージを作りたいと考えています。
8
+
9
+
8
10
 
9
11
  現在スクリプトをいじっていないのでスタート時にテキストが表示され、テキストが表示される状態ですが、これをキャラクターに触れてボタンを押した時に初めて実行するようにし、また、テキストが終了した場合は画面から消えるようにしたいのですが、どのように書き加えられればいいのかわかりません…
10
12
 
@@ -17,3 +19,141 @@
17
19
  アセットの使用も考えたのですが、UIをなるべく寄せたいと考えていて、例が見当たりませんでした。また今回は選択肢やバックログは必要ないため、上記サイトを参考にしています。
18
20
 
19
21
  具体的な方法を教えていただければと思います。よろしくお願いします
22
+
23
+
24
+
25
+ ### 該当のソースコード
26
+
27
+
28
+
29
+ ```ここに言語名を入力
30
+
31
+ using UnityEngine;
32
+
33
+ using System.Collections;
34
+
35
+ using UnityEngine.UI;
36
+
37
+
38
+
39
+ public class TextController : MonoBehaviour
40
+
41
+ {
42
+
43
+ public string[] scenarios;
44
+
45
+ [SerializeField] Text uiText;
46
+
47
+
48
+
49
+ [SerializeField][Range(0.001f, 0.3f)]
50
+
51
+ float intervalForCharacterDisplay = 0.05f;
52
+
53
+
54
+
55
+ private string currentText = string.Empty;
56
+
57
+ private float timeUntilDisplay = 0;
58
+
59
+ private float timeElapsed = 1;
60
+
61
+ private int currentLine = 0;
62
+
63
+ private int lastUpdateCharacter = -1;
64
+
65
+
66
+
67
+ // 文字の表示が完了しているかどうか
68
+
69
+ public bool IsCompleteDisplayText
70
+
71
+ {
72
+
73
+ get { return Time.time > timeElapsed + timeUntilDisplay; }
74
+
75
+ }
76
+
77
+
78
+
79
+ void Start()
80
+
81
+ {
82
+
83
+ SetNextLine();
84
+
85
+ }
86
+
87
+
88
+
89
+ void Update ()
90
+
91
+ {
92
+
93
+ // 文字の表示が完了してるならクリック時に次の行を表示する
94
+
95
+ if( IsCompleteDisplayText ){
96
+
97
+ if(currentLine < scenarios.Length && Input.GetMouseButtonDown(0)){
98
+
99
+ SetNextLine();
100
+
101
+ }
102
+
103
+ }else{
104
+
105
+ // 完了してないなら文字をすべて表示する
106
+
107
+ if(Input.GetMouseButtonDown(0)){
108
+
109
+ timeUntilDisplay = 0;
110
+
111
+ }
112
+
113
+ }
114
+
115
+
116
+
117
+ int displayCharacterCount = (int)(Mathf.Clamp01((Time.time - timeElapsed) / timeUntilDisplay) * currentText.Length);
118
+
119
+ if( displayCharacterCount != lastUpdateCharacter ){
120
+
121
+ uiText.text = currentText.Substring(0, displayCharacterCount);
122
+
123
+ lastUpdateCharacter = displayCharacterCount;
124
+
125
+ }
126
+
127
+ }
128
+
129
+
130
+
131
+
132
+
133
+ void SetNextLine()
134
+
135
+ {
136
+
137
+ currentText = scenarios[currentLine];
138
+
139
+ timeUntilDisplay = currentText.Length * intervalForCharacterDisplay;
140
+
141
+ timeElapsed = Time.time;
142
+
143
+ currentLine ++;
144
+
145
+ lastUpdateCharacter = -1;
146
+
147
+ }
148
+
149
+ }
150
+
151
+ ```
152
+
153
+
154
+
155
+ ### 補足情報(FW/ツールのバージョンなど)
156
+
157
+
158
+
159
+ Unity version 2018.3.0f2

1

リンクを貼り直しました

2019/07/13 13:33

投稿

Tasukete_dava
Tasukete_dava

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,6 @@
1
+ こちらのテキスト表示スクリプト
2
+
1
- こちらのテキスト表示スリプト([http://tsubakit1.hateblo.jp/entry/2014/12/06/233000])
3
+ [リン内容](http://tsubakit1.hateblo.jp/entry/2014/12/06/233000)
2
4
 
3
5
  (超簡単なテキスト制御3)
4
6