Skip to content

Instantly share code, notes, and snippets.

View karljj1's full-sized avatar

Karl Jones karljj1

View GitHub Profile
@karljj1
karljj1 / SerializedDictionaryExample.cs
Last active February 13, 2024 14:04
Serializing a Dictionary in a VisualElement (Unity 2023.2.0a9)
using System;
using System.Collections.Generic;
using UnityEngine.UIElements;
[Serializable]
class DictItem
{
public int key;
public string value;
}
@karljj1
karljj1 / DefaultTmpFont.cs
Last active December 31, 2023 17:48
Localize the default TextMeshPro font.
using System.Reflection;
using TMPro;
using UnityEngine;
using UnityEngine.Localization;
/// <summary>
/// Sets the default TextMeshPro font to be used.
/// </summary>
[ExecuteInEditMode]
public class DefaultTmpFont : MonoBehaviour
@karljj1
karljj1 / GlobalSmartStringColumn.cs
Created September 1, 2022 09:40
Example of a single column to set/get the Smart String status
using System;
using System.Collections.Generic;
using UnityEditor.Localization;
using UnityEditor.Localization.Plugins.Google.Columns;
using UnityEngine.Localization.Tables;
[Serializable]
public class GlobalSmartStringColumn : SheetColumn
{
public override PushFields PushFields => PushFields.Value;
using UnityEngine.EventSystems;
namespace UnityEngine.UI
{
internal static class MultipleDisplayUtilities
{
/// <summary>
/// Converts the current drag position into a relative position for the display.
/// </summary>
/// <param name="eventData"></param>
@karljj1
karljj1 / ObjectChangeEventsExample.cs
Last active June 17, 2025 15:40
Example of how to use ObjectChangeEvents in Unity
using System.Text;
using UnityEditor;
using UnityEngine;
[InitializeOnLoad]
public class ObjectChangeEventsExample
{
static ObjectChangeEventsExample()
{
ObjectChangeEvents.changesPublished += ChangesPublished;
@karljj1
karljj1 / FindUsedKeys.cs
Created May 20, 2022 15:59
Find localization entries that are not used
using System;
using System.Collections.Generic;
using System.Text;
using UnityEditor;
using UnityEditor.Localization;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.Localization.Tables;
using Object = UnityEngine.Object;
using TMPro;
using UnityEditor;
using UnityEngine.Localization.PropertyVariants;
using UnityEngine.Localization.PropertyVariants.TrackedObjects;
using UnityEngine.Localization.PropertyVariants.TrackedProperties;
public class AutoLinkTMP
{
[MenuItem("CONTEXT/TextMeshProUGUI/Localize (With Localized Properties)")]
static void LocalizeTMProText(MenuCommand command)
@karljj1
karljj1 / LocalizedTextureBinder.cs
Created March 22, 2022 15:37
Localization support for VFX Graph
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.VFX;
using UnityEngine.VFX.Utility;
[VFXBinder("Localization/Texture Binder")]
public class LocalizedTextureBinder : VFXBinderBase
{
[SerializeField]
LocalizedTexture m_Texture;
@karljj1
karljj1 / GetSizeOfObject.cs
Last active March 4, 2022 14:39
sizeof - Estimate the size of a managed instance
public static int GetSizeOfObject(object obj, StringBuilder sb = null, int indent = 0, bool details = true)
{
if (sb == null)
{
sb = new StringBuilder();
sb.AppendLine("|Name |Type |Size(b)|");
sb.AppendLine("|--- |--- |--- |");
}
if (indent == 0)
using System;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.PropertyVariants;
using UnityEngine.Localization.PropertyVariants.TrackedObjects;
using UnityEngine.Localization.PropertyVariants.TrackedProperties;
using UnityEngine.ResourceManagement.AsyncOperations;
using Object = UnityEngine.Object;
[Serializable]