Project Categories

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

About

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.

My Work

UI

TooltipSystem

  • 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

Controllers

FirstPersonController

  • 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

ManagementCamera

  • 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

FreeFlyCam

  • 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

Samples

These are some samples from the project.

Videos

Code

Places

Source Code GitHub Repo