Single-player Android game built in Unity.
| Hand | Beats |
|---|---|
| Rock | Scissors, Lizard |
| Paper | Rock, Spock |
| Scissors | Paper, Lizard |
| Lizard | Paper, Spock |
| Spock | Rock, Scissors |
- Tap PLAY
- Select a hand within 1 second
- Win → Score +1, next round
- Tie → Next round (no change)
- Lose/Timeout → Game Over
Assets/Scripts/
├── Core/
│ └── GameManager.cs # Singleton, state management
├── Data/
│ ├── GameEnums.cs # Hand, RoundResult, GameState
│ └── GameConfig.cs # ScriptableObject settings
├── Gameplay/
│ └── RoundController.cs # Round logic, AI, scoring
└── UI/
└── UIController.cs # All UI handling
5 scripts, ~350 lines total
- Singleton -
GameManager.Instance - State Pattern - Enum-based state machine
Right-click Assets/Resources → Create → RPSLS → GameConfig
├── GameManager (empty GO + GameManager.cs)
├── Canvas
│ ├── MainMenuPanel
│ │ ├── HighScoreText (TMP)
│ │ └── PlayButton
│ ├── GameplayPanel
│ │ ├── ScoreText (TMP)
│ │ ├── TimerFill (Image, Filled Horizontal)
│ │ ├── TimerText (TMP)
│ │ ├── AIHandText (TMP): "?"
│ │ └── HandButtons [5] (Rock, Paper, Scissors, Lizard, Spock)
│ ├── ResultOverlay
│ │ ├── ResultBackground (Image)
│ │ └── ResultText (TMP)
│ └── GameOverPanel
│ ├── FinalScoreText (TMP)
│ ├── HighScoreText (TMP)
│ ├── PlayAgainButton
│ └── MenuButton
├── UIController (empty GO + UIController.cs)
└── EventSystem
- Canvas Scaler: Scale With Screen Size (1080x1920, Match 0.5)
- TimerFill: Image Type = Filled, Fill Method = Horizontal
- Hand buttons must be in order: Rock(0), Paper(1), Scissors(2), Lizard(3), Spock(4)
- File → Build Settings → Android
- Player Settings: Package name, Min API 22, Portrait
- Build APK