🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

1回答

4618閲覧

UnityかつFungusアセットを利用している方にお聞きしたい。Block test does not exist.というエラーで...

gotoken_yuutyan

総合スコア5

RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2019/12/27 05:42

編集2019/12/29 08:55

前提・実現したいこと

<前提>
UnityEngineとFungusというアセットを使用しています。
なので、Fungusアセットを利用している人に質問を読んでいただきたいです。

<実現したいこと>
FungusアセットのVariables(Blockの構図写真左下)で作成した変数を【グローバル化】すると
NPCからブロックを取得できなくなるバグを直したい。
(※PrivateとPublicだとなぜか取得できる)

また、Variablesの変数をセーブしたいので【グローバル化】にこだわりたい。

一言で言うと、"グローバル化してもNPCブロックを取得させたい"

発生している問題・エラーメッセージ

[13:43:28] Block test does not exist. UnityEngine.Debug : LogError(Object) //このスクリプトがおかしい、エラー何行目などの詳細はありませんでした。

スクリプト関係を図で説明

イメージ説明

Blockの構図

イメージ説明

文章だけだとわかりにくいと思い、エラーを動画にしてみたのでご覧ください。
こちらの動画は、Eキーで話しかけてpublic、privateにした場合 その次にグローバルにした際の挙動です。
エラーをこちらの動画でご覧ください

該当のソースコード

ここ2日間、違うソースをこの質問に貼っていましたが
回答が付かないのでもっと根本的な原因があるのかと思い

Fungusアセット本体の原因であろうソースを貼り付けし直しました。

C#

1//Fungusのブロックを取得するだけのソース(会話をさせたい町のNPCなどにアタッチする。) 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6 7public class BlockTrigger : MonoBehaviour 8{ 9 public string blockName; 10}

C#

1//Eキーで話しかけて、そのNPCがブロックを持っていたら検出する 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using Fungus; 6 7public class CheckCommand : MonoBehaviour 8{ 9 [SerializeField] 10 float rayLength = 1f; 11 Flowchart flowchart; 12 13 void Start() 14 { 15 flowchart = FindObjectOfType<Flowchart>(); 16 } 17 // Update is called once per frame 18 void Update() 19 { 20 if (Input.GetKeyDown(KeyCode.E)) 21 { //Eキーに調べるコマンドを割り当てる 22 Ray ray = new Ray(transform.position, transform.forward); 23 RaycastHit hit; 24 //Debug.DrawRay(ray.origin, ray.direction * 10, Color.red, 5); 25 if (Physics.Raycast(ray, out hit, rayLength)) 26 { 27 //衝突したものがBlockTriggerを持っているか調べ、持っていたらそのblockを実行する 28 var trigger = hit.transform.GetComponent<BlockTrigger>(); 29 if (trigger != null) 30 { 31 flowchart.ExecuteBlock(trigger.blockName); 32 } 33 34 } 35 } 36 } 37}

C#

1//ブロックを見つけるためのメソッド・関数詳細ソース 2public virtual Block FindBlock(string blockName) 3 { 4 var blocks = GetComponents<Block>(); 5 for (int i = 0; i < blocks.Length; i++) 6 { 7 var block = blocks[i]; 8 if (block.BlockName == blockName) 9 { 10 return block; 11 } 12 } 13 14 return null; 15 } 16 17//エラーメッセージを促すメソッド 18 public virtual void ExecuteBlock(string blockName) 19 { 20 var block = FindBlock(blockName); 21 22 if (block == null) 23 { 24 Debug.LogError("Block " + blockName + " does not exist"); 25 return; 26 } 27 28 if (!ExecuteBlock(block)) 29 { 30 Debug.LogWarning("Block " + blockName + " failed to execute"); 31 } 32 } 33

試したこと

????FlowChartに、2つキャラ分のブロックを設定して、かつVariablesの変数をグローバル化にしたらエラー。
なので、キャラごとに????FlowChartを分けて作成してみて、変数をセーブしたい????FlowChartだけグローバル化を適応。
しかし、グローバル化した????FlowChartだけ読み込まれてそれ以外エラー。このほかの????FlowChartがなぜ取得できなくなるのかを知りたい。

Fungusリファレンス
Fungusリファレンスを参考にしてみたが、解決策見つからず。

フリーのビジュアルノベルセットFungus...
また、ブロックの構成の仕方が間違っているのかと思い、このサイトを参考にしてみたが解決できず。
(このサイトは、Variablesでprivateなのになぜ変数をセーブできているのか私にはわからない。
私はprivateだと変数のセーブはできませんでした。)

補足情報(FW/ツールのバージョンなど)

Unity 2.11f(エラーが怖いのでアップデートをまだしていません)

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

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

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

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

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

guest

回答1

0

2020.10現在ですが、fungusに対応しているバージョンは、
unity 2017以降です。
私の場合、unity5ではできなかったので、アセットストアの情報を確認したところ、
unity 2017以降出ないと使用できないとのことでしたので、
2017に切り替えたところ、すぐに使えました。

投稿2020/10/10 00:31

KS-_-SK

総合スコア39

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問