CS2335
Master 1.0.0
Master 1.0.0
  • Introduction
  • Introduction
    • Introduction
      • Game Design
    • Unity - Download
    • Visual Studio - IDE
    • Unity Manual, Scripting API
  • Unity Basics
    • Unity Editor Windows
    • Behavior Components
    • 2D Project, Scenes
      • Create 2D Sprite GameObject
      • Create UI-Text GameObject
    • MonoBehavior - Base-Class
    • Create a Custom C# Script
  • Game Coding Structures
    • Games Overview
    • Unity Engine - Event Functions
    • Finite State Machines
    • UML Class Diagram
  • Animation
    • Animator Controller
    • Animation Steps
      • Optional: Dead Animation
    • PlayerController.cs V0
  • Project 1 - Player
    • Player GameObject v1
      • C# Generics, Statics
    • Player GameObject - Jump
    • PlayerController.cs V2-Jump
    • PickUp PreFabs
      • Sorting Layers
    • PlayerController.cs V3-Collide
    • GameData Version1
    • GameData Version2
    • PlayerController V4-Score
  • Project 1 Details
    • Project1 GameObjects
    • PlayerStats Version1
      • UI-Canvas
    • Utility Class
    • Simple Spawner
    • MiniGameManager
      • Logic Diagrams
      • StartButton
      • ResultsPanel
  • Project1 Enhancements
    • PickUp - SelfDestruct
    • Spawn from List of Prefabs
  • Project 2 - StateManager
    • Project 2 - Learning Objectives
      • Inspiration
        • Branching Story Structures
        • Branching Structures
        • Hero's Journey
        • Visual Novel in Unity-Links
    • Project 2 - Starter Assets
    • State Machine Framework
    • StateManager - Singleton Design Pattern
    • Interface IStateBase
    • Create SceneXState.cs
    • OptionPanel Prefab
      • UI Images: Sprite Sheets
      • Button Image-Transitions
    • Project 2 - List of Steps
    • Project 2 - Starter Code
  • Project 2 -Dialogue
    • Hide_Show_Panel Script
    • Edit OptionPanel
    • Simple DialogPrefab
    • Conversation Entry
    • SimpleDialog.cs
    • ScriptableObjects
      • Scriptable Object Factory
    • Conversation Scriptable Objects
    • DialogManager_ConvList
      • DialogManager V2
      • Coroutines: Dynamic Text
      • DialogPrefab wImage
  • Overview: Branching Logic
    • DialogTrigger
    • Dictionary Data-Structure
      • Unity PlayerPrefs Dictionary
    • GameData Version3
    • Dictionary: choiceData
      • SaveChoice, ChoicePanel
        • choiceData - examples
          • Dictionary Value to Disable Options
    • Configure UI-Button Listeners
      • NPC Animation
      • NPC Activation
    • UI-Triggered Animations
    • Simple Inventory
    • EndState Conditions
    • Script ExecutionOrder
    • Custom UnityEvents
    • PlayerStats v2
      • ModifyPlayerData
      • BuyItem
    • Text Input
  • UI Components
    • Finding Game Objects
    • Game Objects: UI vs. 2D Sprite
    • UI Elements
      • Canvas: Screen-Space Render-Mode
      • UI-Buttons To Change Scene
  • Proj4: Inventory System
    • Inventory-System
      • GameData version4
      • Install and Configure
      • Diagrams, Resources
        • Item, Gem, Potion Classes
        • Inventory Class
      • InventoryDisplay, Slot UI
        • InventoryDisplay Class
        • Slot Class
        • Hazard Class
        • Layout Groups
      • Customization Steps
        • Configure Animation
        • AddItem Button
        • Concrete Class: Food
        • MiniGame Mods
          • PlayerController Mods
      • Code: InventorySystem
        • GameData, PickUp Mods
      • Resources: Data Structures
  • Custom Unity Events
    • Event Publishing Patterns
    • Custom Event Messaging
  • Proj4: Mini-Game
    • Simplified Mini-Game
      • PlayerController_v2 Mods
        • PlayerController_v2_final
      • MiniGameManager_v2
    • MiniGame-Overview-Proj4
    • LevelManager
      • LevelManager Logic Diagram
      • LevelManager FSM
      • LoadLevel, StartLevel Logic
      • Code Framework
    • Timer
  • Project 4 - Code Mods
    • Project 4 - Steps
    • Project 4 - Code
      • Code: Final Versions
        • PlayerController Mods
          • PlayerController_v2 Mods
        • GameData - Final
        • LevelManager
        • PlayerStats - Final
        • PickUp, Hazard, ScorePickUp
        • Spawner - Final
        • CameraFollow
        • ScreenFader
        • MiniGameState
        • Example: EndState
      • MiniGameWin Logic
  • Optional, Supplemental Content
    • Optional Content
      • Particle Systems
      • Adding Audio
      • Screen Fading and Reloading
      • ScriptableObjects
      • Disable Debug Logging
      • Events and Actions
      • Saving Data - Serialization
      • Parallax Scrolling
      • Change Sprites
    • XR - Extended Reality
  • Computing Concepts
    • Programming Patterns
      • State - FSM
      • Singleton Pattern
    • C# Language
      • Variables
      • Delegates
      • Dictionary
      • Enum
      • Encapsulation
        • C# Properties
        • Access Modifiers
      • Generics < T >
      • Inheritance
      • Interface
      • List< T >
      • Polymorphism
      • Queue< T >
      • Switch-Case
      • Foreach
      • Static
      • Ternary Operator: ?
      • this
    • Diagrams
      • State Machine Framework
      • UML Class Diagrams
      • Level Manager Logic Diagram
      • Flow-Chart: NumberGame
      • FSM: NumberGame
    • Tools
    • Glossary
    • References and Resources
    • Random Thoughts
Powered by GitBook
On this page
  • Create / Configure PickUp GameObject
  • Prefab:
  • PickUp Class - v1

Was this helpful?

  1. Project 1 - Player

PickUp PreFabs

PreviousPlayerController.cs V2-JumpNextSorting Layers

Last updated 4 years ago

Was this helpful?

Throughout our game we will want to have game items for the player to collide with to earn score points or to lose health value. These will be called PickUp items. We'll create a simple script component: PickUp.cs that allows setting a point value for each item instance. We'll turn these gameObjects into Prefabs, which are stored as a reusable project asset.

Create / Configure PickUp GameObject

In Unity, we'll want to create and configure gameObjects that will have the PickUp.cs script component attached to give desired behavior. The PickUp objects in your game must have tag: Collectible, at least one should have tag: Hazard.

  • Create a 2D Sprite GameObject

  • Set the to Spawned (See )

  • Physics2D Collision: Add a Collider2D to the GameObject, configure collider shape

  • Configure the Collider2D to be isTrigger == true

  • Tags: Create custom Tags, set a tag for each PickUp gameObjects: "Collectible", "Hazard", other? See images below

  • Physics2D Movement Optional: Add Rigidbody2D if the gameObject will move

    • Add additional Collider2D inside the trigger Collider2D, to keep this moving gameObject from falling through the floor's Collider2D.

  • Script Logic: Add PickUp.cs script (see below)

    • Select type from dropdown in inspector

    • Set value, set with a positive value ( Collectibles, Hazards )

  • Prefab: Drag into Project Assets Resource Folder to create as a prefab

Prefab:

Prefabs provide a method for turning any gameObject into an asset, whereas normally a gameObject is defined strictly within the scene where it was first created. Prefabs allow instantiation (spawning) of gameObjects during gamePlay. Prefabs can be exported from your project and reused in another Unity project. For any gameObject that is non-trivial, creating a prefab ensures that you'll aways have a saved version of the object, in case a particular scene gets corrupted.

Unique Prefab Instances vs Asset-Version of Prefab: As described above: if you make edits to the asset-version of a prefab, then those changes are immediately reflected in all instances across your project. If you make changes to a prefab instance within a scene, those changes will not impact any other prefabs, unless you select to apply those changes to the level of the asset-version. It is best to get your gameObject configured to it's final state before making the original prefab, otherwise, you may make changes (like adding a script component) to a gameObject in a scene, and forget that those changes do not impact the asset-version of the prefab.

PickUp Class - v1

This is the first version of the PickUp Class Script, this will be modified in Project 3.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public enum PickupType
{
    crate, crystal, rock, star                 //add as needed
}


public class PickUp : MonoBehaviour
{

  [SerializeField]  //allows modification in inspector 
  private int value;

    //read-only property
    public int Value
    {
        get { return value; }
    }


    public PickupType type; //what is the PickupType of this object

}// end class

Unity’s Prefab system allows you to create, configure, and store a GameObject complete with all its components, property values, and child GameObjects as a reusable Asset. The Prefab Asset acts as a template from which you can create new Prefab instances in the Scene Any edits that you make to a Prefab Asset are automatically reflected in the instances of that Prefab, allowing you to easily make broad changes across your whole Project without having to repeatedly make the same edit to every copy of the Asset.

Unity Manual
Sorting Layer
SortingLayers
Add Custom Tags to each PickUp: Collectible, Hazard
Set the Tag on the PickUp gameObject by selecting Collectible Tag in the Inspector