GithubHelp home page GithubHelp logo

bodix / evolunity Goto Github PK

View Code? Open in Web Editor NEW
52.0 2.0 2.0 910 KB

Well-designed package with useful scripting tools for Unity development​

License: Other

C# 100.00%
unity unity3d package library tool tools toolkit extensions utilities utility

evolunity's Introduction

🌿 Evolunity

Unity version License

Well-designed package with useful scripting tools for Unity development.

Cheatsheet

Coroutines

// Calls the function in the next frame.
Delay.ForOneFrame(() => Debug.Log("Hello in the next frame"));
// Calls the function after a N of seconds.
Delay.ForSeconds(3, () => Debug.Log("Hello after three seconds"));
// Calls the function after a N of frames.
Delay.ForFrames(300, () => Debug.Log("Hello after three hundred frames"));

// Calls the function periodically every N seconds.
Repeat.EverySeconds(1, () => Debug.Log("Hello every second"));
// Calls the function periodically every N frames.
Repeat.EveryFrames(10, () => Debug.Log("Hello every ten frames"));
// Calls the function periodically every frame.
// Analogous to "Update", but you can use it not only from MonoBehaviour classes.
Repeat.EveryFrame(() => Debug.Log("Hello every frame"));

// Starts a static coroutine. You can use this outside of MonoBehaviour.
StaticCoroutine.Start(SomeCoroutine());

// You can cache a coroutine instance and stop it at any time.
Coroutine delayCoroutine = Delay.ForSeconds(60, () => Debug.Log("Delay coroutine"));
Coroutine repeatCoroutine = Repeat.EverySeconds(60, () => Debug.Log("Repeat coroutine"));
Coroutine staticCoroutine = StaticCoroutine.Start(SomeCoroutine());
// To stop a cached coroutine instance use StaticCoroutine.Stop method.
// See the description of the StaticCoroutine.Stop method for details.
StaticCoroutine.Stop(delayCoroutine);
StaticCoroutine.Stop(repeatCoroutine);
StaticCoroutine.Stop(staticCoroutine);

// You can specify the MonoBehaviour instance on which to execute the coroutine.
ExampleBehaviour exampleBehaviour = GetComponent<ExampleBehaviour>();
Coroutine delayCoroutine2 = Delay.ForSeconds(60, () => Debug.Log("Delay coroutine"), exampleBehaviour);
Coroutine repeatCoroutine2 = Repeat.EverySeconds(60, () => Debug.Log("Repeat coroutine"), this);
// In this case, you can stop the coroutine as usual.
exampleBehaviour.StopCoroutine(delayCoroutine2);
this.StopCoroutine(repeatCoroutine2);

IEnumerable Extensions

GameObject[] objects =
{
    new GameObject("Cube"),
    new GameObject("Sphere"),
    new GameObject("Cone")
};

// Output the array to the console.
// Output: Cone (UnityEngine.GameObject), Sphere (UnityEngine.GameObject), Cube (UnityEngine.GameObject)
Debug.Log(objects.AsString());
// Output the array to the console by specifying the string selector and separator.
// Output: Cone : Sphere : Cube
Debug.Log(objects.AsString(item => item.name, " : "));

// Get random object from the array.
GameObject randomObj = objects.Random();

// Shuffle the array.
objects = objects.Shuffle().ToArray();

// Remove duplicates from the array.
objects = objects.RemoveDuplicates().ToArray();

// ForEach as extension method.
objects.ForEach(Debug.Log);
objects.ForEach((x, index) => Debug.Log(index + " : " + x.name + ", "));
// ForEach as extension method with lazy execution.
objects.ForEachLazy(Debug.Log);
objects.ForEachLazy((x, index) => Debug.Log(index + " : " + x.name + ", "));

Cheatsheet still WIP

Content

Utilities

  • StaticCoroutine - Static coroutine.
  • Delay - Utility for calling functions with a delay. Based on StaticCoroutine.
  • Screenshot - Utility for quick and easy screenshots.
  • Performance - Utility for measuring functions performance.
  • BinarySerializer - Utility for serializing objects.
  • StringEncryptor - Utility for encrypting strings.
  • Enum - Utility for parsing and working with enums.
  • Angle - Utility for working with angles.
  • MathUtilities - Math utilities.
  • RegexPatterns - Set of default regular expression patterns.
  • Validate - Utility for validating various things.
  • WrappedCoroutine - Coroutine, which contains useful data and functions for the job.

Unity components

  • PeriodicBehaviour - Calls the given function periodically.
  • Spawner - Spawns objects one-time or periodically. Based on PeriodicBehaviour.
  • InputReader - Reads click, drag and zoom (cross-platform).
  • LongPressReader - Reads long press (cross-platform).
  • GifImage - Plays an array of sprites like a gif.
  • FPSCounter - Counts FPS and outputs it to the Text component.
  • Comment - Contains a comment to the GameObject.
  • DevelopmentOnly - Destroys/disable the object if the DEVELOPMENT define is not set in the project settings.
  • PlatformDependent - Destroys/disable the object if the platform specified in it does not match the current one.
  • DontDestroyOnLoad - Makes GameObject persistent.
  • SingletonBehaviour - Singleton MonoBehaviour.

Editor

  • UnityConstantsGenerator - Tool for generating static classes with tags, layers, scenes, and input axes.
  • CameraScreenshot - Tool for taking screenshot from the main camera.
  • MenuItems - Useful menu items.
  • Config - Editor window with different project settings (e.g., target frame rate).
  • LayerDrawer - Property drawer for LayerAttribute that shows a popup with layers (not mask).
  • Define - Defines management.
  • EditorConsole - Utility for working with the Editor console.
  • OpenInFileManager - Utility to open the given path in the file manager.

Structs

  • Direction - Direction given by vector.
  • FloatRange - Range given by two floats.
  • IntRange - Range given by two ints.

Other

  • Singleton - POCO singleton.
  • StateMachine - Immutable state machine without using strings, enums or reflections.
  • WeightQueue - Queue filled with elements in which the number of each element is determined by its weight.

Extension methods

  • System types:

    • T[]
    • byte[]
    • char
    • IComparable
    • IDictionary
    • IEnumerable
    • string
  • Unity types:

    • Animator
    • Color
    • Graphic
    • LayerMask
    • MonoBehaviour
    • Object
    • Quaternion
    • Rect
    • RectTransform
    • Renderer
    • Texture
    • ToggleGroup
    • Transform
    • UnityWebRequest
    • Vector

Dependencies

Warning

Evolunity may receive breaking changes, so be sure to make a backup before updating the package.

Install

  • Unity 2019.3 and above:

    Use the following URL in the Package Manager: https://github.com/Bodix/Evolunity.git

    Manual

  • Before Unity 2019.3:

    Open {ProjectFolder}/Packages/manifest.json and add the following line:

    {
      "dependencies":
      {
        "com.evolutex.evolunity": "https://github.com/Bodix/Evolunity.git",
        ...
      }
    }

Requirements

  • Unity 2018.4+
    (You can try the lower version, but I haven't tested that)

  • Git
    (Must be added to the PATH environment variable)

License

CC BY-ND 4.0

  1. You can use this package in commercial projects.

  2. You can modify or extend this package only for your own use but you can't distribute the modified version.

    Note: You can submit a pull request to this repository and if your change is useful, I'll be sure to add it!

  3. You must indicate the author.

    Note: You don't need to take any action on this point, because all attributions are written at the head of the scripts!

evolunity's People

Contributors

bodix avatar bogdan-nikolaev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

evolunity's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.