Skip to content

Instantly share code, notes, and snippets.

View snlehton's full-sized avatar

Sampsa Lehtonen snlehton

View GitHub Profile
@snlehton
snlehton / SOExample.cs
Last active August 29, 2015 14:18
ScriptableObject example
using UnityEngine;
using System.Collections;
public class SOExample : ScriptableObject
{
public string text;
}
@snlehton
snlehton / SOExampleBehaviour.cs
Last active August 29, 2015 14:18
SOExample behaviour
using UnityEngine;
using System.Collections;
public class SOExampleBehaviour : MonoBehaviour
{
public SOExample test;
public void OnEnable()
{
// instantiate if needed
if (test == null)
test = ScriptableObject.CreateInstance<SOExample>();
@snlehton
snlehton / SOExample scene
Created April 2, 2015 14:18
SOExample scene
....
--- !u!114 &819407913 <<--- this is our ScriptableObject id in the scene
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4a48e9db79a952f419ca79d71a03fe31, type: 3}
@snlehton
snlehton / SOExampleBehaviour2.cs
Created April 2, 2015 14:41
SOExampleBehaviour v2
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class SOExampleBehaviour : MonoBehaviour
{
public SOExample test;
public void OnEnable()
{
// find existing instance if needed
if (test == null)
public static class RemoveEmptyDirectories
{
[MenuItem("Tools/EditorHacks/Remove empty directories...")]
public static void MenuItem_RemoveEmptyDirectories()
{
RemoveEmptyDirectoriesRecursive("Assets/");
}
private static void RemoveEmptyDirectoriesRecursive(string path)
{
@snlehton
snlehton / ResoScaler.cs
Created October 16, 2016 18:57
A simple Unity component to render the screen in lower resolution
using UnityEngine;
// Render the screen in lower resolution
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
public class ResoScaler : MonoBehaviour
{
[Range(1, 8)]
public float scale = 1;
@snlehton
snlehton / BetterButton.cs
Created December 7, 2016 17:17
"Better" version of the Unity UI.Button which prevents the button from becoming selected upon mouse click
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class BetterButton : Button
{
public override void OnSelect(BaseEventData eventData)
{
// prevent the button on becoming selected via mouse click
if (eventData is PointerEventData)
{
using System.Collections.Generic;
public static class ListExtensions
{
public static T GetRandomWeighted<T>(this List<T> list, Func<T, float> selector)
{
T selected = default(T);
float totalWeight = 0;
foreach (var item in list)
{
using UnityEngine;
public class SpawnTest : MonoBehaviour
{
// a prefab containing SpawnTestPrefab
public GameObject prefab;
void Start()
{
Instantiate(prefab, new Vector3(100, 0, 0), Quaternion.identity);
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
/*
Simple EventManager class to implement one-to-many event passing. Features:
* Simple enum and payload events.
* Delayed event sending (send later in the frame in one place).
* Detects adding duplicates/removing non-existent listeners in Unity editor mode.