Project Categories

Project Setting Personal
Team Size 1
Role(s) Creator / Developer
Languages C#
Software/Tools Used Unity (engine), Visual Studio (IDE)
Status Released, Further development on hiatus
Time Period May 2020 - June 2021


GW-Std-Unity is a repository of cross-project assets for my games. I noticed that I was re-implementing similar functionality for multiple projects, so I decided to make a universal, independent repo for these functions. Currently, this repo contains a robust tooltip system and management-game camera, extensions to Unity UI Sliders (planned to be refactored as child classes), a highly generalized rigidbody first person controller, and some miscellaneous utilities.

The project has gone under a large refactor to support being used with the Unity package manager. This is a work in progress. The biggest refactor was with the first person controller, which I redesigned after I was unhappy with it being a single large file. I designed it to be as modular as possible, each module being as easy as drag-and-dropping onto the controller's main gameobject and adding itself to the controller's update methods when necessary. I also renamed it to Character Controller with the hopes that it could be used first and third person, even with the ability to go between the two seemlessly.

My Work



  • Highly generalized rigidbody first person controller based on Unity's new Input System using its event-based features (to only read input values when there is input)
  • Offers many settings (such as different speed settings depending on type of movement, controller's physical characteristics, force magnitudes, etc), with exposed settings that can be set by players (such as base FOV, whether speed modifiers are toggled or held, camera sensitivity, etc.) or by game context (such as speed multiplier, the ability to move, etc.)
  • Invokes UpdateMovementState, a way for other optional systems to be tied to the controller and keep separation of concerns
  • Includes a ControllerSoundSystem and ControllerAnimationSystem already made fully functional, prototype-ready (or even production-ready) samples for handling UpdateMovementState
  • Includes a defined set of InputActions so that the controller is ready out-of-the-box with support for keyboard/mouse and gamepad inputs
  • Full XML documentation


  • Robust set of camera controllers (currently orbit-style and free-fly-style) for use in management-based games such a city-builders and god-games
  • Optional modules such as gamepad cursor movement and camera mode swapping
  • Account for collision with large world bodies such as terrain
  • Abstract parent ManagementCamera class which provides the core functionality of the cameras
  • Child ManagementCamera_ classes which implement specifics, currently differing methods of rotation
  • Utilizes Unity's new Input System and provides a default set of controls with the corresponding ManagementCamera package
  • Full XML documentation
  • Fully functional Unity demo with instructions on usage


  • Rudimentary free-flying camera that can move along all three axes and rotate vertically/horizontally
  • Ability to lock camera in place so that mouse input can affect other things (such as UI) rather than camera control (assuming included InputActions are used)
  • Full XML documentation



  • Robust tooltipping system inspired by Tippy.js which allows a structure for creating Tooltip Prefabs and assigning Tooltip Enabled Elements to any graphical element
  • Fully functional Unity demo showing off the many features of TooltipSystem such as anchoring, attachment, arrowless/arrowed, transitions, timing, etc.
  • Allows the ability to manipulate the colors and text of the tooltip at runtime
  • Supports passing through style tags through to TextMeshPro

Slider Extensions

  • SliderTextLoadExtension: a MonoBehaviour class that is attached to and tied with sliders, is handled externally (either directly through Unity event attachment or a custom event handler)
  • SliderTransitionExtension: a class that is associated with a slider and an always-active parent MonoBehaviour, intended to be used with Dictionaries or similar, with the ability to update slider values easily and transitioning them under-the-hood
  • Full XML documentation
  • Fully functional Unity demo with instructions on usage


These are some samples from the project.




Source Code GitHub Repo