Global Game Jam 2020に参加してきました - 番外編 -
こんにちは、カメドット ( @kamedot ) です。
今回の記事ではGlobalGameJJamの番外編になります。
内容としては、技術的に作業した内容に、特化した「こんな作業していたよ('◇')ゞ」 という記事です。
各シーン毎に紹介をしていきます
タイトルシーン
インスペクター
SceneManagerのスニペット
TitleScene...タイトル画面内の操作や効果音の組み込み
AudioTestManager...各種サウンドを鳴らすための処理を保持
Title.cs全体
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; /// <summary> /// タイトルシーン用のスクリプト /// </summary> public class TitleScene : MonoBehaviour { /// <summary> /// 音楽マネージャクラス /// </summary> public AudioTestManager audioTestManager; /// <summary> /// 開始時処理 /// </summary> void Start() { } /// <summary> /// ゲームループ内の呼び出し処理 /// </summary> void Update() { if (Input.GetKey(KeyCode.Joystick1Button0)|| Input.GetKey(KeyCode.Joystick2Button0)) { audioTestManager.PlayDecide(); SceneManager.LoadScene("Main"); } if (Input.GetKey(KeyCode.Joystick1Button2) || Input.GetKey(KeyCode.Joystick2Button2)) { audioTestManager.PlayDecide(); SceneManager.LoadScene("Description"); } } }
以下は、実装した内容の説明
audioTestManager.PlayDecide()で決定音を鳴らして、
SceneManager.LoadScene("Main"); でゲーム開始用画面へ遷移しています
if (Input.GetKey(KeyCode.Joystick1Button0)|| Input.GetKey(KeyCode.Joystick2Button0)) { audioTestManager.PlayDecide(); SceneManager.LoadScene("Main"); }
audioTestManager.PlayDecide()で決定音を鳴らして、
SceneManager.LoadScene("Description"); で操作説明用画面へ遷移しています
if (Input.GetKey(KeyCode.Joystick1Button2) || Input.GetKey(KeyCode.Joystick2Button2)) { audioTestManager.PlayDecide(); SceneManager.LoadScene("Description"); }
操作説明画面
インスペクター
DescriptionSceneに、操作説明用として以下のパラメータを用意
Images...操作説明画面で使うスクリーンショットのリスト
Texts........操作説明画面の画像とセットの説明文章画像
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; /// <summary> /// 操作説明画面のシーンスクリプト /// </summary> public class DescriptionScene : MonoBehaviour { public AudioTestManager audioTestManager; /// <summary> /// 現在選択中のページ番号 /// </summary> public int PageNumber = 0; /// <summary> /// 実際の表示で利用している画像オブジェクト /// </summary> public GameObject image; /// <summary> /// 操作説明画面内で使うスクリーンショットの配列 /// </summary> public GameObject[] images; /// <summary> /// 操作説明画面内で使うスクリーンショットの説明画像配列 /// </summary> public GameObject[] texts; // Start is called before the first frame update void Start() { } void Update() { if (Input.GetKey(KeyCode.Joystick1Button0) && audioTestManager != null) { audioTestManager.PlayDecide(); SceneManager.LoadScene("Title"); } // Xボタン次の画面へ遷移する Button 1 if (Input.GetKeyDown(KeyCode.Joystick1Button1)) { if (PageNumber < images.Length && audioTestManager != null) { audioTestManager.PlayDecide(); PageNumber++; } } // Bボタン 前の画面へ遷移する Button 2 if (Input.GetKeyDown(KeyCode.Joystick1Button2)) { if (PageNumber > 0 && audioTestManager != null) { audioTestManager.PlayDecide(); PageNumber--; } } // 表示変更 for (int i = 0; i < images.Length; i++) { if (i == PageNumber) { image.GetComponent<SpriteRenderer>().sprite = images[i].GetComponent<SpriteRenderer>().sprite; } } } }
条件式で、現在選択中の説明文判定して、一致している場合はimagesのspriteを入れ替えています。
if (i == PageNumber) { image.GetComponent<SpriteRenderer>().sprite = images[i].GetComponent<SpriteRenderer>().sprite; }
塔オブジェクトは、3dのパーツ組み立てをしていました。
*コードについては、バトルロジックを書いている方と重複しているので省略いたします
gyazo.com
プレファブ
操作説明画面やリザルトダイアログなどプログラム上から呼ぶことが前提のオブジェクトについて
prefabsへ投入したり作業を進めていました
赤い四角の枠で囲ったオブジェクトが今回作業をさせていただいたものになります。
以上、UIとモデリングを中心にプログラムの報告でしたー
参考記事
(はてなブログの @baba_s さんの記事)
(Unityの基本ページ Unity - マニュアル: Unity マニュアル )