コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

2022-08-23から1日間の記事一覧

【Unity】スクリプトから UIElements の要素を横に並べる方法

概要 var root = new VisualElement(); root.style.flexDirection = FlexDirection.Row; VisualElement の style.flexDirection に FlexDirection.Row を指定する これだけだと要素が左に表示されてしまう var root = new VisualElement(); root.style.flexD…

【Unity】Scenes In Build が変更されたかどうかを検知する方法

ソースコード using System.Linq; using UnityEditor; using UnityEngine; internal sealed class Example : AssetPostprocessor { private const string PATH = "ProjectSettings/EditorBuildSettings.asset"; private static void OnPostprocessAllAssets …

【C#】2 つの配列の要素をインデックス同士で紐付けて Tuple にまとめる拡張メソッド

概要 using System.Collections.Generic; namespace Kogane { public static class SequenceJoinTupleExtensionMethods { public static (T1, T2)[] JoinTuple<T1, T2>( this T1[] self, T2[] other ) { var count = self.Length; var result = new (T1, T2)[ count </t1,>…

【C#】条件を満たす場合にのみ Prepend する拡張メソッド

概要 using System.Collections.Generic; using System.Linq; namespace Kogane { public static class EnumerableExtensionMethods { public static IEnumerable<T> PrependIf<T> ( this IEnumerable<T> self, bool conditional, T element ) { return !conditional </t></t></t>…

【C#】System.Text.Json で列挙型を文字列でシリアライズする方法

C#

概要 using System.Text.Json; using UnityEngine; public enum CharacterType { NONE, PLAYER, ENEMY, } public class Example : MonoBehaviour { private void Start() { var data = new { characterType = CharacterType.PLAYER }; Debug.Log( JsonSerial…

【Unity】InvalidProgramException: Invalid IL code in XXXX:CecilAttributesGenerated_ResetStatics (): IL_0001: call 0x06000301

概要 [ResetStatic] public static bool IsInitialized { get; private set; } Cecil Attributes の Reset Static をプロパティに対して付与したら InvalidProgramException: Invalid IL code in XXXX:CecilAttributesGenerated_ResetStatics (): IL_0001: c…

【Unity】Cecil Attributes の Reset Static を null 許容値型のフィールドに使うと Unity 再生時にエディタがクラッシュする

概要 [ResetStatic] private static float? m_value; null 許容値型のフィールドに Reset Static を使ったら Unity 再生時にエディタがクラッシュする現象に遭遇した null 許容値型のフィールドに Reset Static を使わないようにしたらクラッシュしなくなっ…

【Unity】GetComponent の結果をキャッシュしておくためのクラス

ソースコード using UnityEngine; namespace Kogane { /// <summary> /// GetComponent の結果をキャッシュしておくためのクラス /// </summary> public sealed class ComponentCache<T> { private T m_cache; private bool m_isCached; public T Get( GameObject gameObject ) { /</t>…