質問編集履歴

5

回答があまりにつかないので、もっとわかりやすく図で説明しました。

2019/12/29 08:55

投稿

gotoken_yuutyan
gotoken_yuutyan

スコア5

test CHANGED
File without changes
test CHANGED
@@ -44,6 +44,10 @@
44
44
 
45
45
 
46
46
 
47
+ ### スクリプト関係を図で説明
48
+
49
+ ![イメージ説明](1ca124868ef34adbdb5b7a0f5ce20c75.jpeg)
50
+
47
51
 
48
52
 
49
53
  ### Blockの構図
@@ -76,13 +80,15 @@
76
80
 
77
81
  ```C#
78
82
 
83
+ //Fungusのブロックを取得するだけのソース(会話をさせたい町のNPCなどにアタッチする。)
84
+
79
85
  using System.Collections;
80
86
 
81
87
  using System.Collections.Generic;
82
88
 
83
89
  using UnityEngine;
84
90
 
85
- //Fungusのブロックを取得するだけのソース(会話をさせたい町のNPCなどにアタッチする。)
91
+
86
92
 
87
93
 
88
94
 
@@ -98,9 +104,91 @@
98
104
 
99
105
 
100
106
 
107
+
108
+
101
109
  ```C#
102
110
 
111
+ //Eキーで話しかけて、そのNPCがブロックを持っていたら検出する
112
+
113
+ using System.Collections;
114
+
115
+ using System.Collections.Generic;
116
+
117
+ using UnityEngine;
118
+
119
+ using Fungus;
120
+
121
+
122
+
123
+ public class CheckCommand : MonoBehaviour
124
+
125
+ {
126
+
127
+ [SerializeField]
128
+
129
+ float rayLength = 1f;
130
+
131
+ Flowchart flowchart;
132
+
133
+
134
+
135
+ void Start()
136
+
137
+ {
138
+
139
+ flowchart = FindObjectOfType<Flowchart>();
140
+
141
+ }
142
+
143
+ // Update is called once per frame
144
+
145
+ void Update()
146
+
147
+ {
148
+
149
+ if (Input.GetKeyDown(KeyCode.E))
150
+
151
+ { //Eキーに調べるコマンドを割り当てる
152
+
153
+ Ray ray = new Ray(transform.position, transform.forward);
154
+
155
+ RaycastHit hit;
156
+
157
+ //Debug.DrawRay(ray.origin, ray.direction * 10, Color.red, 5);
158
+
159
+ if (Physics.Raycast(ray, out hit, rayLength))
160
+
161
+ {
162
+
163
+ //衝突したものがBlockTriggerを持っているか調べ、持っていたらそのblockを実行する
164
+
165
+ var trigger = hit.transform.GetComponent<BlockTrigger>();
166
+
167
+ if (trigger != null)
168
+
169
+ {
170
+
171
+ flowchart.ExecuteBlock(trigger.blockName);
172
+
173
+ }
174
+
175
+
176
+
177
+ }
178
+
179
+ }
180
+
181
+ }
182
+
183
+ }
184
+
185
+ ```
186
+
187
+
188
+
189
+ ```C#
190
+
103
- //ブロックを見つけるためのメソッド
191
+ //ブロックを見つけるためのメソッド・関数詳細ソース
104
192
 
105
193
  public virtual Block FindBlock(string blockName)
106
194
 
@@ -166,11 +254,7 @@
166
254
 
167
255
 
168
256
 
169
-
170
-
171
- ```
257
+ ```
172
-
173
-
174
258
 
175
259
 
176
260
 

4

ここ2日間、違うソースをこの質問に貼っていましたが 回答が付かないのでもっと根本的な問題があるのかと思い Fungusアセット本体の原因であろうソースを貼り付けし直しました。

2019/12/29 08:55

投稿

gotoken_yuutyan
gotoken_yuutyan

スコア5

test CHANGED
File without changes
test CHANGED
@@ -44,6 +44,8 @@
44
44
 
45
45
 
46
46
 
47
+
48
+
47
49
  ### Blockの構図
48
50
 
49
51
  ![イメージ説明](99c8f6314e2bf782831316154f0e1355.jpeg)
@@ -62,6 +64,16 @@
62
64
 
63
65
 
64
66
 
67
+ ここ2日間、違うソースをこの質問に貼っていましたが
68
+
69
+ 回答が付かないのでもっと根本的な原因があるのかと思い
70
+
71
+
72
+
73
+ Fungusアセット本体の原因であろうソースを貼り付けし直しました。
74
+
75
+
76
+
65
77
  ```C#
66
78
 
67
79
  using System.Collections;
@@ -88,81 +100,71 @@
88
100
 
89
101
  ```C#
90
102
 
91
- using System.Collections;
92
-
93
- using System.Collections.Generic;
94
-
95
- using UnityEngine;
96
-
97
- using Fungus;
98
-
99
- /*カメラの視線先にブロックを持っオブジェクトがあれば
103
+ //ブロックを見つけるめのメソッド
100
-
101
- オブジェクトが持っているブロックを取得しそのブロックを実行させる*/(フローチャートにアタッチするソース)
104
+
102
-
103
-
104
-
105
- public class CheckCommand : MonoBehaviour
105
+ public virtual Block FindBlock(string blockName)
106
-
106
+
107
- {
107
+ {
108
-
109
- [SerializeField]
108
+
110
-
111
- float rayLength = 1f;
112
-
113
- Flowchart flowchart;
114
-
115
-
116
-
117
- void Start()
118
-
119
- {
120
-
121
- flowchart = FindObjectOfType<Flowchart>();
109
+ var blocks = GetComponents<Block>();
122
-
123
- }
110
+
124
-
125
- // Update is called once per frame
126
-
127
- void Update()
128
-
129
- {
130
-
131
- if (Input.GetKeyDown(KeyCode.E))
132
-
133
- { //Eキーに調べるコマンドを割り当てる
134
-
135
- Ray ray = new Ray(transform.position, transform.forward);
136
-
137
- RaycastHit hit;
138
-
139
- //Debug.DrawRay(ray.origin, ray.direction * 10, Color.red, 5);
140
-
141
- if (Physics.Raycast(ray, out hit, rayLength))
111
+ for (int i = 0; i < blocks.Length; i++)
142
112
 
143
113
  {
144
114
 
145
- //衝突したものがBlockTriggerを持っているか調べ、持っていたらそのblockを実行する
146
-
147
- var trigger = hit.transform.GetComponent<BlockTrigger>();
115
+ var block = blocks[i];
148
-
116
+
149
- if (trigger != null)
117
+ if (block.BlockName == blockName)
150
118
 
151
119
  {
152
120
 
153
- flowchart.ExecuteBlock(trigger.blockName);
121
+ return block;
154
122
 
155
123
  }
156
124
 
157
-
158
-
159
125
  }
160
126
 
127
+
128
+
129
+ return null;
130
+
161
131
  }
162
132
 
133
+
134
+
135
+ //エラーメッセージを促すメソッド
136
+
137
+ public virtual void ExecuteBlock(string blockName)
138
+
139
+ {
140
+
141
+ var block = FindBlock(blockName);
142
+
143
+
144
+
145
+ if (block == null)
146
+
147
+ {
148
+
149
+ Debug.LogError("Block " + blockName + " does not exist");
150
+
151
+ return;
152
+
163
- }
153
+ }
154
+
155
+
156
+
164
-
157
+ if (!ExecuteBlock(block))
158
+
159
+ {
160
+
161
+ Debug.LogWarning("Block " + blockName + " failed to execute");
162
+
165
- }
163
+ }
164
+
165
+ }
166
+
167
+
166
168
 
167
169
 
168
170
 

3

回答がなかなかつかないので、さらに詳細を加えました。

2019/12/28 08:09

投稿

gotoken_yuutyan
gotoken_yuutyan

スコア5

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  <実現したいこと>
12
12
 
13
- FungusアセットのVariablesで作成した変数を【グローバル化】すると
13
+ FungusアセットのVariables(Blockの構図写真左下)で作成した変数を【グローバル化】すると
14
14
 
15
15
  NPCからブロックを取得できなくなるバグを直したい。
16
16
 
@@ -42,6 +42,14 @@
42
42
 
43
43
  ```
44
44
 
45
+
46
+
47
+ ### Blockの構図
48
+
49
+ ![イメージ説明](99c8f6314e2bf782831316154f0e1355.jpeg)
50
+
51
+
52
+
45
53
  文章だけだとわかりにくいと思い、エラーを動画にしてみたのでご覧ください。
46
54
 
47
55
  こちらの動画は、Eキーで話しかけてpublic、privateにした場合 その次にグローバルにした際の挙動です。
@@ -160,9 +168,7 @@
160
168
 
161
169
  ```
162
170
 
163
- ### Blockの構図
171
+
164
-
165
- ![イメージ説明](99c8f6314e2bf782831316154f0e1355.jpeg)
166
172
 
167
173
 
168
174
 

2

リンクが有効かされなかったので、マークアップ外へ記述を移動

2019/12/27 09:39

投稿

gotoken_yuutyan
gotoken_yuutyan

スコア5

test CHANGED
File without changes
test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  //このスクリプトがおかしい、エラー何行目などの詳細はありませんでした。
42
42
 
43
-
43
+ ```
44
44
 
45
45
  文章だけだとわかりにくいと思い、エラーを動画にしてみたのでご覧ください。
46
46
 
@@ -48,8 +48,6 @@
48
48
 
49
49
  [エラーをこちらの動画でご覧ください](https://youtu.be/1ptlOUwxMHg)
50
50
 
51
- ```
52
-
53
51
 
54
52
 
55
53
  ### 該当のソースコード

1

文章だけだとわかりにくいので、動画を追加しました

2019/12/27 07:23

投稿

gotoken_yuutyan
gotoken_yuutyan

スコア5

test CHANGED
File without changes
test CHANGED
@@ -40,6 +40,14 @@
40
40
 
41
41
  //このスクリプトがおかしい、エラー何行目などの詳細はありませんでした。
42
42
 
43
+
44
+
45
+ 文章だけだとわかりにくいと思い、エラーを動画にしてみたのでご覧ください。
46
+
47
+ こちらの動画は、Eキーで話しかけてpublic、privateにした場合 その次にグローバルにした際の挙動です。
48
+
49
+ [エラーをこちらの動画でご覧ください](https://youtu.be/1ptlOUwxMHg)
50
+
43
51
  ```
44
52
 
45
53