Last active
June 21, 2026 15:55
-
-
Save somedeveloper00/7d925c472e4cc1c65763337c9de54a65 to your computer and use it in GitHub Desktop.
Lobbyスクリプト
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using System.Threading.Tasks; | |
| using System.Threading.Tasks.Dataflow; | |
| using UnityEngine; | |
| using UnityEngine.InputSystem; | |
| public enum CharacterType | |
| { | |
| Character1, | |
| Character2, | |
| Character3, | |
| } | |
| public class PlayerInfo | |
| { | |
| public InputDevice PairWithDevice { get; private set; } = default; | |
| public CharacterType SelectedCharacter { get; private set; } = default; | |
| public PlayerInfo(InputDevice pairWithDevice, CharacterType selectedCharacter) | |
| { | |
| PairWithDevice = pairWithDevice; | |
| SelectedCharacter = selectedCharacter; | |
| } | |
| } | |
| public class Lobby : MonoBehaviour | |
| { | |
| public GameObject character1PreviewPrefab, character2PreviewPrefab, character3PreviewPrefab; | |
| public Transform player1PreviewSpawnPoint, player2PrviewSpawnPoint; | |
| GameObject player1Preview, player2Preview; | |
| // どこかで各プレイヤーの情報を配列にしておく | |
| private PlayerInfo[] playerInfos = new PlayerInfo[2] | |
| { | |
| new(null, CharacterType.Character1), | |
| new(null, CharacterType.Character2), | |
| }; | |
| void Start() | |
| { | |
| UpdatePlayer1Visual(); | |
| UpdatePlayer2Visual(); | |
| } | |
| /// <summary> | |
| /// プレイヤー1の「→」ボタンから発火 | |
| /// </summary> | |
| public void Player1SwitchCharacterNext() | |
| { | |
| playerInfos[0] = new(playerInfos[0].PairWithDevice, GetNextCharactertype(playerInfos[0].SelectedCharacter)); | |
| UpdatePlayer1Visual(); | |
| } | |
| /// <summary> | |
| /// プレイヤー1の「←」ボタンから発火 | |
| /// </summary> | |
| public void Player1SwitchCharacterPrevious() | |
| { | |
| playerInfos[0] = new(playerInfos[0].PairWithDevice, GetPreviousCharactertype(playerInfos[0].SelectedCharacter)); | |
| UpdatePlayer1Visual(); | |
| } | |
| /// <summary> | |
| /// プレイヤー2の「→」ボタンから発火 | |
| /// </summary> | |
| public void Player2SwitchCharacterNext() | |
| { | |
| playerInfos[1] = new(playerInfos[1].PairWithDevice, GetNextCharactertype(playerInfos[1].SelectedCharacter)); | |
| UpdatePlayer2Visual(); | |
| } | |
| /// <summary> | |
| /// プレイヤー2の「←」ボタンから発火 | |
| /// </summary> | |
| public void Player2SwitchCharacterPrevious() | |
| { | |
| playerInfos[1] = new(playerInfos[1].PairWithDevice, GetPreviousCharactertype(playerInfos[1].SelectedCharacter)); | |
| UpdatePlayer2Visual(); | |
| } | |
| public static CharacterType GetNextCharactertype(CharacterType current) => current switch | |
| { | |
| CharacterType.Character1 => CharacterType.Character2, | |
| CharacterType.Character2 => CharacterType.Character3, | |
| CharacterType.Character3 => CharacterType.Character1, | |
| }; | |
| public static CharacterType GetPreviousCharactertype(CharacterType current) => current switch | |
| { | |
| CharacterType.Character1 => CharacterType.Character3, | |
| CharacterType.Character2 => CharacterType.Character1, | |
| CharacterType.Character3 => CharacterType.Character2, | |
| }; | |
| /// <summary> | |
| /// ゲームを開始するボタンから発火 | |
| /// </summary> | |
| public async Task GameStart() | |
| { | |
| // シーン遷移し、遷移先のコンポーネントを取得する | |
| var target = await SceneLoader.Load<InGameHogeScript>("InGameScene"); | |
| // 遷移先のコンポーネントのプロパティにセット | |
| target.SetInformation(playerInfos); | |
| } | |
| private void UpdatePlayer1Visual() | |
| { | |
| if (player1Preview) | |
| Destroy(player1Preview); | |
| player1Preview = Instantiate( | |
| GetPreviewPrefabFromCharacterType(playerInfos[0].SelectedCharacter), | |
| player1PreviewSpawnPoint); | |
| } | |
| private void UpdatePlayer2Visual() | |
| { | |
| if (player2Preview) | |
| Destroy(player2Preview); | |
| player2Preview = Instantiate( | |
| GetPreviewPrefabFromCharacterType(playerInfos[1].SelectedCharacter), | |
| player2PreviewSpawnPoint); | |
| } | |
| GameObject GetPreviewPrefabFromCharacterType(CharacterType characterType) | |
| { | |
| return characterType switch | |
| { | |
| CharacterType.Character1 => character1PreviewPrefab, | |
| CharacterType.Character2 => character2PreviewPrefab, | |
| CharacterType.Character3 => character3PreviewPrefab, | |
| }; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment