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

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

新規登録して質問してみよう
ただいま回答率
85.49%
C#

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

Q&A

解決済

3回答

2672閲覧

unity/C#/宴で質問です

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2016/11/17 09:39

編集2016/11/17 13:45

初心者です。仕事でプラグインツール「宴」(unityノベルゲーム制作)を使っての追加の実装をしたいです。しかし、C#勉強を進めても一向に理解できず何がなんだか…理解できるかた解説していただきませんでしょうか。お願いします>< 説明が変だったらすいません・・・。
・unity5.4

丸なげ質問って言われてますね…。自分でもなんとか理解したいのですが理解が乏しいのでこのような質問しかできません。すいません。

・実装したいこと・
追加でメニュー画面の作成しました(プログラムではなくほぼunity内で作成)
そのメニュー画面を押すと、AUTO(シナリオ自動)が止まり、メニューを閉じるとAUTOが再開されるというプログラムを作りたいです。

AdvConfigというコンフィグプログラムの中の自動メッセージ送りの
IsAutoBrPageがAUTOのコードだと思います。

/// <summary> /// 自動メッセージ送り /// </summary> public bool IsAutoBrPage { get { return current.isAutoBrPage; } set { current.isAutoBrPage = value; } } /// <summary> /// 自動メッセージ送り切り替え /// </summary> public void ToggleAuto() { IsAutoBrPage = !IsAutoBrPage; } } }

メイン画面内のプログラムです。オートフラグを反映というのがAUTOの再開などが書かれていると思うのですが違うでしょうか?
メニュー画面にLateUpdate()を入れてみましたが何も変化はありません。
他の画面(ログ画面やセーブ画面など)はすべて、自動的にAUTOが再開されています。何故再開されるのかわからないのです。作成したメニュー画面にどうプログラムを書けばいいのかわからず一向に進みません。
何か助言してくださる方お願いします。

public class UtageUguiMainGame : UguiView { /// <summary>ADVエンジン</summary> public AdvEngine Engine { get { return this.engine ?? (this.engine = FindObjectOfType<AdvEngine>()); } } [SerializeField] AdvEngine engine; /// <summary>ADVエンジン</summary> public UguiLetterBoxCamera LetterBoxCamera { get { return this.letterBoxCamera ?? (this.letterBoxCamera = FindObjectOfType<UguiLetterBoxCamera>()); } } [SerializeField] UguiLetterBoxCamera letterBoxCamera; /// <summary>タイトル画面</summary> public UtageUguiTitle title; /// <summary>コンフィグ画面</summary> public UtageUguiConfig config; /// <summary>セーブロード画面</summary> public UtageUguiSaveLoad saveLoad; /// <summary>ギャラリー画面</summary> public UtageUguiGallery gallery; /// <summary>ボタン</summary> public GameObject buttons; /// <summary>スキップボタン</summary> public Toggle checkSkip; /// <summary>自動で読み進むボタン</summary> public Toggle checkAuto; //起動タイプ enum BootType { Default, Start, Load, SceneGallery, StartLabel, }; BootType bootType; //ロードするセーブデータ AdvSaveData loadData; bool isInit = false; /// <summary>起動するシナリオラベル</summary> string scenaioLabel; void Awake() { Engine.Page.OnEndText.AddListener((page) => CaptureScreenOnSavePoint(page)); } public void LateUpdate() { //メニューボタンの表示・表示を切り替え buttons.SetActive(Engine.UiManager.IsShowingMenuButton && Engine.UiManager.Status == AdvUiManager.UiStatus.Default); //スキップフラグを反映 if (checkSkip) { if (checkSkip.isOn != Engine.Config.IsSkip) { checkSkip.isOn = Engine.Config.IsSkip; } } //オートフラグを反映 if (checkAuto) { if (checkAuto.isOn != Engine.Config.IsAutoBrPage) { checkAuto.isOn = Engine.Config.IsAutoBrPage; } } } void CaptureScreenOnSavePoint( AdvPage page ) { if (Engine.SaveManager.Type == AdvSaveManager.SaveType.SavePoint) { if (page.IsSavePoint) { Debug.Log("Capture"); StartCoroutine(CoCaptureScreen()); } } } コード

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

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

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

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

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

guest

回答3

0

ベストアンサー

新規実装のメニュー画面を開いたタイミングで、
AdvEngine.Config.IsAutoBrPage = false;
閉じたタイミングで、
AdvEngine.Config.IsAutoBrPage = true;

UtageUguiMainMenuのLateUpdateは単純に毎フレームConfigの値をチェックして
更新があったらボタンの状態を上書きしてるだけですね。AUTOの処理自体とは関係なさそう

投稿2016/11/18 02:09

ShiroKuroShiro

総合スコア134

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

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

退会済みユーザー

退会済みユーザー

2016/11/18 04:15

回答ありがとうございます。助かります。LateUpdate勘違いしてました>< 書いていただいたコードを参考にします。
guest

0

もう1つの同内容質問のコードを拝見しました。
「Engine.Config.IsAutoBrPage」の切り替えでは動作しませんか?

投稿2016/11/17 10:26

sakura_hana

総合スコア11427

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

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

退会済みユーザー

退会済みユーザー

2016/11/17 13:55

回答ありがとうございます。 切り替えというのはLateUpdate()の //オートフラグを反映で書かれていることではないのですか? 他のボタンはそういうものを書かれていないのに、AUTOが自動で再開されているのがわからないのです。それがわかれば同じようにしたいのですが。 切り替えのプログラムは書ければ書きたいです。回答まで要求しません。何か参考になるものでも教えて頂けたらと思います。
ishi9

2016/11/18 01:30

ちょっと便乗して checkAuto.isOn = Engine.Config.IsAutoBrPage; とありますが、checkAutoは特に何かに影響を及ぼしているようには見えません。 むしろ、ゲームの挙動を変化させたいなら Engine.Config.IsAutoBrPage = true; // or false のようにEngine.Config.IsAutoBrPage側にフラグを設定しないと意味がないのではないでしょうか? 宴の使い方がよくわからないので憶測になってしまいますが
退会済みユーザー

退会済みユーザー

2016/11/18 04:13

回答ありがとうございます! そうですね、checkAutoはこのプラグラムしか使われていないし理解ある人がみても意味がわからないですよね。フラグ設定勉強してみてみます。ありがとうございます。
ShiroKuroShiro

2016/11/18 05:44

checkAutoはToggleなので、isOnの状態が変わった場合にToggleのOnValueChangeイベントにバインドしているイベントが呼ばれているはずです。(おそらく、エディタ側で設定しているはず)
sakura_hana

2016/11/18 06:13 編集

ShiroKuroShiroさんのコメントにある通り、OnValueChangeのバインドではなくLateUpdate内で受け取りしているようですね。 LateUpdateの処理もそうですが、 「フラグ自体(今回であればAdvEngine.Config.IsAutoBrPage)」 「フラグを操作するUI(今回であればcheckAuto)」 「フラグを見て実際に処理を行うところ(今回であればオート処理を行うコード(挙げられているのとは別のコード))」 がそれぞれどこであるかを理解すると、既存システムのカスタマイズもやりやすくなると思います。
退会済みユーザー

退会済みユーザー

2016/11/22 01:48 編集

退会済みユーザー

退会済みユーザー

2016/11/22 01:54 編集

guest

0

専用ツールの質問なら専用ツールの公式に聞いた方が早いと思われます(知名度の高いものは別ですが)
Unity用ビジュアルノベルツール「宴」

投稿2016/11/17 09:51

ishi9

総合スコア1294

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

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

退会済みユーザー

退会済みユーザー

2016/11/17 10:00

質問したのですが、プラグイン外のことでなのでなかなか。IsAutoBrPageを使って作るしかないと言われました…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問