質問編集履歴
5
回答があまりにつかないので、もっとわかりやすく図で説明しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -21,6 +21,8 @@
|
|
21
21
|
//このスクリプトがおかしい、エラー何行目などの詳細はありませんでした。
|
22
22
|
```
|
23
23
|
|
24
|
+
### スクリプト関係を図で説明
|
25
|
+

|
24
26
|
|
25
27
|
### Blockの構図
|
26
28
|

|
@@ -37,19 +39,61 @@
|
|
37
39
|
Fungusアセット本体の原因であろうソースを貼り付けし直しました。
|
38
40
|
|
39
41
|
```C#
|
42
|
+
//Fungusのブロックを取得するだけのソース(会話をさせたい町のNPCなどにアタッチする。)
|
40
43
|
using System.Collections;
|
41
44
|
using System.Collections.Generic;
|
42
45
|
using UnityEngine;
|
43
|
-
//Fungusのブロックを取得するだけのソース(会話をさせたい町のNPCなどにアタッチする。)
|
44
46
|
|
47
|
+
|
45
48
|
public class BlockTrigger : MonoBehaviour
|
46
49
|
{
|
47
50
|
public string blockName;
|
48
51
|
}
|
49
52
|
```
|
50
53
|
|
54
|
+
|
51
55
|
```C#
|
56
|
+
//Eキーで話しかけて、そのNPCがブロックを持っていたら検出する
|
57
|
+
using System.Collections;
|
58
|
+
using System.Collections.Generic;
|
59
|
+
using UnityEngine;
|
60
|
+
using Fungus;
|
61
|
+
|
62
|
+
public class CheckCommand : MonoBehaviour
|
63
|
+
{
|
64
|
+
[SerializeField]
|
65
|
+
float rayLength = 1f;
|
66
|
+
Flowchart flowchart;
|
67
|
+
|
68
|
+
void Start()
|
69
|
+
{
|
70
|
+
flowchart = FindObjectOfType<Flowchart>();
|
71
|
+
}
|
72
|
+
// Update is called once per frame
|
73
|
+
void Update()
|
74
|
+
{
|
75
|
+
if (Input.GetKeyDown(KeyCode.E))
|
76
|
+
{ //Eキーに調べるコマンドを割り当てる
|
77
|
+
Ray ray = new Ray(transform.position, transform.forward);
|
78
|
+
RaycastHit hit;
|
79
|
+
//Debug.DrawRay(ray.origin, ray.direction * 10, Color.red, 5);
|
80
|
+
if (Physics.Raycast(ray, out hit, rayLength))
|
81
|
+
{
|
82
|
+
//衝突したものがBlockTriggerを持っているか調べ、持っていたらそのblockを実行する
|
83
|
+
var trigger = hit.transform.GetComponent<BlockTrigger>();
|
84
|
+
if (trigger != null)
|
85
|
+
{
|
86
|
+
flowchart.ExecuteBlock(trigger.blockName);
|
87
|
+
}
|
88
|
+
|
89
|
+
}
|
90
|
+
}
|
91
|
+
}
|
92
|
+
}
|
93
|
+
```
|
94
|
+
|
95
|
+
```C#
|
52
|
-
//ブロックを見つけるためのメソッド
|
96
|
+
//ブロックを見つけるためのメソッド・関数詳細ソース
|
53
97
|
public virtual Block FindBlock(string blockName)
|
54
98
|
{
|
55
99
|
var blocks = GetComponents<Block>();
|
@@ -82,11 +126,9 @@
|
|
82
126
|
}
|
83
127
|
}
|
84
128
|
|
85
|
-
|
86
129
|
```
|
87
130
|
|
88
131
|
|
89
|
-
|
90
132
|
### 試したこと
|
91
133
|
????FlowChartに、2つキャラ分のブロックを設定して、かつVariablesの変数をグローバル化にしたらエラー。
|
92
134
|
なので、キャラごとに????FlowChartを分けて作成してみて、変数をセーブしたい????FlowChartだけグローバル化を適応。
|
4
ここ2日間、違うソースをこの質問に貼っていましたが 回答が付かないのでもっと根本的な問題があるのかと思い Fungusアセット本体の原因であろうソースを貼り付けし直しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -21,6 +21,7 @@
|
|
21
21
|
//このスクリプトがおかしい、エラー何行目などの詳細はありませんでした。
|
22
22
|
```
|
23
23
|
|
24
|
+
|
24
25
|
### Blockの構図
|
25
26
|

|
26
27
|
|
@@ -30,6 +31,11 @@
|
|
30
31
|
|
31
32
|
### 該当のソースコード
|
32
33
|
|
34
|
+
ここ2日間、違うソースをこの質問に貼っていましたが
|
35
|
+
回答が付かないのでもっと根本的な原因があるのかと思い
|
36
|
+
|
37
|
+
Fungusアセット本体の原因であろうソースを貼り付けし直しました。
|
38
|
+
|
33
39
|
```C#
|
34
40
|
using System.Collections;
|
35
41
|
using System.Collections.Generic;
|
@@ -43,45 +49,40 @@
|
|
43
49
|
```
|
44
50
|
|
45
51
|
```C#
|
46
|
-
using System.Collections;
|
47
|
-
using System.Collections.Generic;
|
48
|
-
using UnityEngine;
|
49
|
-
using Fungus;
|
50
|
-
/
|
52
|
+
//ブロックを見つけるためのメソッド
|
51
|
-
オブジェクトが持っているブロックを取得しそのブロックを実行させる*/(フローチャートにアタッチするソース)
|
52
|
-
|
53
|
-
public
|
53
|
+
public virtual Block FindBlock(string blockName)
|
54
|
-
{
|
54
|
+
{
|
55
|
-
[SerializeField]
|
56
|
-
float rayLength = 1f;
|
57
|
-
Flowchart flowchart;
|
58
|
-
|
59
|
-
void Start()
|
60
|
-
{
|
61
|
-
|
55
|
+
var blocks = GetComponents<Block>();
|
62
|
-
}
|
63
|
-
// Update is called once per frame
|
64
|
-
void Update()
|
65
|
-
{
|
66
|
-
if (Input.GetKeyDown(KeyCode.E))
|
67
|
-
{ //Eキーに調べるコマンドを割り当てる
|
68
|
-
Ray ray = new Ray(transform.position, transform.forward);
|
69
|
-
RaycastHit hit;
|
70
|
-
//Debug.DrawRay(ray.origin, ray.direction * 10, Color.red, 5);
|
71
|
-
|
56
|
+
for (int i = 0; i < blocks.Length; i++)
|
72
57
|
{
|
73
|
-
//衝突したものがBlockTriggerを持っているか調べ、持っていたらそのblockを実行する
|
74
|
-
var
|
58
|
+
var block = blocks[i];
|
75
|
-
if (
|
59
|
+
if (block.BlockName == blockName)
|
76
60
|
{
|
77
|
-
|
61
|
+
return block;
|
78
62
|
}
|
79
|
-
|
80
63
|
}
|
64
|
+
|
65
|
+
return null;
|
81
66
|
}
|
82
|
-
}
|
83
|
-
}
|
84
67
|
|
68
|
+
//エラーメッセージを促すメソッド
|
69
|
+
public virtual void ExecuteBlock(string blockName)
|
70
|
+
{
|
71
|
+
var block = FindBlock(blockName);
|
72
|
+
|
73
|
+
if (block == null)
|
74
|
+
{
|
75
|
+
Debug.LogError("Block " + blockName + " does not exist");
|
76
|
+
return;
|
77
|
+
}
|
78
|
+
|
79
|
+
if (!ExecuteBlock(block))
|
80
|
+
{
|
81
|
+
Debug.LogWarning("Block " + blockName + " failed to execute");
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
|
85
86
|
```
|
86
87
|
|
87
88
|
|
3
回答がなかなかつかないので、さらに詳細を加えました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
なので、Fungusアセットを利用している人に質問を読んでいただきたいです。
|
5
5
|
|
6
6
|
<実現したいこと>
|
7
|
-
FungusアセットのVariablesで作成した変数を【グローバル化】すると
|
7
|
+
FungusアセットのVariables(Blockの構図写真左下)で作成した変数を【グローバル化】すると
|
8
8
|
NPCからブロックを取得できなくなるバグを直したい。
|
9
9
|
(※PrivateとPublicだとなぜか取得できる)
|
10
10
|
|
@@ -20,6 +20,10 @@
|
|
20
20
|
[13:43:28] Block test does not exist. UnityEngine.Debug : LogError(Object)
|
21
21
|
//このスクリプトがおかしい、エラー何行目などの詳細はありませんでした。
|
22
22
|
```
|
23
|
+
|
24
|
+
### Blockの構図
|
25
|
+

|
26
|
+
|
23
27
|
文章だけだとわかりにくいと思い、エラーを動画にしてみたのでご覧ください。
|
24
28
|
こちらの動画は、Eキーで話しかけてpublic、privateにした場合 その次にグローバルにした際の挙動です。
|
25
29
|
[エラーをこちらの動画でご覧ください](https://youtu.be/1ptlOUwxMHg)
|
@@ -79,10 +83,9 @@
|
|
79
83
|
}
|
80
84
|
|
81
85
|
```
|
82
|
-
### Blockの構図
|
83
|
-

|
84
86
|
|
85
87
|
|
88
|
+
|
86
89
|
### 試したこと
|
87
90
|
????FlowChartに、2つキャラ分のブロックを設定して、かつVariablesの変数をグローバル化にしたらエラー。
|
88
91
|
なので、キャラごとに????FlowChartを分けて作成してみて、変数をセーブしたい????FlowChartだけグローバル化を適応。
|
2
リンクが有効かされなかったので、マークアップ外へ記述を移動
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,11 +19,10 @@
|
|
19
19
|
```
|
20
20
|
[13:43:28] Block test does not exist. UnityEngine.Debug : LogError(Object)
|
21
21
|
//このスクリプトがおかしい、エラー何行目などの詳細はありませんでした。
|
22
|
-
|
22
|
+
```
|
23
23
|
文章だけだとわかりにくいと思い、エラーを動画にしてみたのでご覧ください。
|
24
24
|
こちらの動画は、Eキーで話しかけてpublic、privateにした場合 その次にグローバルにした際の挙動です。
|
25
25
|
[エラーをこちらの動画でご覧ください](https://youtu.be/1ptlOUwxMHg)
|
26
|
-
```
|
27
26
|
|
28
27
|
### 該当のソースコード
|
29
28
|
|
1
文章だけだとわかりにくいので、動画を追加しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,6 +19,10 @@
|
|
19
19
|
```
|
20
20
|
[13:43:28] Block test does not exist. UnityEngine.Debug : LogError(Object)
|
21
21
|
//このスクリプトがおかしい、エラー何行目などの詳細はありませんでした。
|
22
|
+
|
23
|
+
文章だけだとわかりにくいと思い、エラーを動画にしてみたのでご覧ください。
|
24
|
+
こちらの動画は、Eキーで話しかけてpublic、privateにした場合 その次にグローバルにした際の挙動です。
|
25
|
+
[エラーをこちらの動画でご覧ください](https://youtu.be/1ptlOUwxMHg)
|
22
26
|
```
|
23
27
|
|
24
28
|
### 該当のソースコード
|