Skip to content

Instantly share code, notes, and snippets.

View robertwahler's full-sized avatar

Robert Wahler robertwahler

View GitHub Profile
@robertwahler
robertwahler / ScreenCapture.cs
Created May 3, 2018 13:26
Unity snippet for supersizing in-engine screenshots
// Take up to 10 screenshots per session, then start overwriting
private IEnumerator Capture(string path=null, string filename=null) {
Log.Debug(string.Format("ScreenCapture.Capture(path: {0}, filename: {1}) Settings.DataPath={0}", path, filename, Settings.DataPath));
screenShotCount += 1;
if (screenShotCount > 10) {
screenShotCount = 1;
}
if (filename == null) {
@robertwahler
robertwahler / Settings.cs
Created May 8, 2018 16:43
Unity DataPath property w/ hard coded macOS path
/// <summary>
/// The root data folder. Used by the entire application to read and write
/// data, not just used by the Settings class. This is an absolute path.
/// </summary>
#if UNITY_EDITOR
// Each product has its own folder in tmp when running in the editor.
// This allows audio and other debug settings to be separate from
// standalone builds on the same development machine.
// NOTE: The hard-coded forward slash should work on Windows, Linux, and OSX.
public static string DataPath = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), "tmp/settings/" + Application.productName);
@robertwahler
robertwahler / entity.cs
Created January 22, 2019 16:24
Non allocating, lazy loaded, Unity Physics.OverlapSphere
/// <summary>
/// Collider cache for non allocating physics calls. Lazy loaded.
/// </summary>
/// <example>
/// Usage
/// <code>
/// float radius = 0.2f;
/// int colliderCount = Physics.OverlapSphereNonAlloc(transform.position, radius: radius, results: ColliderCache);
/// for (int i = 0; i<colliderCount; i++) {
/// ...
@robertwahler
robertwahler / package.rb
Created January 23, 2019 14:22
Ruby Thor snippet to package code on OSX
desc "osx", "create distribution package for Mac OS X"
method_option :dmg, :type => :boolean, :desc => "Create a DMG container instead of a zip file"
def osx
set_instance_variables
# clean staging folder
clean
osx_copy_to_staging(@product)
@robertwahler
robertwahler / UnityFindAndReplaceWithGNUTools.md
Created September 10, 2019 15:34
Find and Replace in Unity Assets using GNU Tools

Find and Replace in Unity Assets

Directly change serialized field name LevelId to levelId in all scenes. Requires Unity Force Text serialization.

Requires GNU tools. Tested on OSX. Note Windows @code users can run WSL Linux directly in the editor terminal!

Find Product Scenes