2020-04-01から1ヶ月間の記事一覧
Image を角丸にする処理を探していると material を利用しているものが多く material の差し替えが面倒だったので BaseMeshEffect を利用してみました Meshの頂点が結構増えますが、Text の Outline や Shadow よりはましなはず ※左下のやつで154頂点 色を指…
以前の記事「UnityEngine.UI.Image を グラデーション表示する」で使っていた グラデーションを Filled に対応 using UnityEngine; using UnityEngine.UI; public class GradientImageFilled : GradientImage { [SerializeField, Range(0, 1f)] private floa…
Image をグラデーションできるコンポーネントです Slice の画像にも対応してあります Image が付いてあるオブジェクトに 追加してもらえれば利用できます グラデーションの色を増やすとそれだけ Mesh が生成されるので、適切なグラデーション設定してくださ…
Image Type は 一つしか選べないため Slice された画像を利用してゲージっぽい見た目にしようとしてもできない そのため、BaseMeshEffect を利用して、Image を Sliced に設定し、Filledの対応を時前で用意する これを利用すると このように Slice された画…
using UnityEditor; using UnityEngine; public static class EditorWindowUtil { /// <summary> /// Editor Window がすでに開かれているかどうか /// </summary> public static bool IsOpen<T>() where T : EditorWindow { var findObjects = Resources.FindObjectsOfTypeAll<T>(); </t></t>…
docs.unity3d.com Animator.Update に Time.deltaTime を食わせることで Editor Mode でも Animator を再生することができる public void PlayAnimation(string name, int layer = 0, float normalizedTime = 0f) { Animator.speed = 1f; Animator.Play(name…
using UnityEngine; using UnityEngine.UI; [RequireComponent(typeof(RawImage))] public class RawImageScroll : MonoBehaviour { [SerializeField, HideInInspector] private RawImage _rawImage; [SerializeField] private float _speedX = 1f; [Seriali…
大胆な例ですが、これをビルドするともちろんエラーになります using UnityEngine; public class SampleMonoBehaviour : MonoBehaviour { private void Awake() { var editorClass = new EditorClass(); } #if UNITY_EDITOR private class EditorClass { } #…
SDK を設定しようと Download を押しても Android Studio の DL ページに飛んで 何をしたらいいのかわからなくなったのでメモ Android Studio の インストール Download リンクから Download Android Studio and SDK tools | Android Developers へ移動しDL…
どこで使うのか分かりませんが、ツールバーメニューの AddComponent を スクリプトから呼び出すことができたのでメモ using System; using System.Reflection; private static void AddComponentFromType(Type type, GameObject targetObj) { var menuPath =…
using System; using System.Reflection; private static bool IsOverrideMethod(Type type, string methodName) { var method = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic); if (method == null) return false; return m…
アセットを移動する際にドラッグして移動するのが面倒だったので、移動先を指定して移動できるように拡張 using UnityEditor; using UnityEngine; public static class EditorMoveDirectory { [MenuItem("Assets/Move Directory")] private static void Move…
Image や Text など Graphic 継承のクラスに対して 水平もしくは垂直に色のグラデーションを入れられる機能 Is Each Vertex にチェックを入れることで Text の場合1文字ずつグラデーションが可能 using System.Collections.Generic; using System.Linq; usin…
RectTransform で サイズを変えた際に子供のサイズも同じように変えたい場合 Stretch に変えるだけでは下図のように子供のサイズが想定しないようになります 左:もともと 右:サイズを10倍してスケールを1/10にしたもの これを解決するには Anchors を調整しL…
Fade モードにすれば1文字ずつフェードして現れる using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; [RequireComponent(typeof(Text))] public class AppearText : BaseMeshEffect { private enum DisplayType { NoFade, Fade, …
using UnityEditor; using UnityEngine; public class SampleEditorWindow : EditorWindow { private Texture2D _texture; private void OnGUI() { if (GUILayout.Button("画像をロードする")) { // ロード先を取得 var sourcePath = EditorUtility.OpenFile…
Resources という特殊フォルダがあるように Editor Default Resources という名の UnityEditor 専用 のフォルダが存在します Editor Default Resources フォルダーは 1 つしか作成できず、Project のルートに配置する必要があります。Assets フォルダー内に…
前の記事で YieldInstruction を利用するときに yield return new WaitForSeconds(0.01f); とすると呼び出し毎にゴミが出るとのことがあったので それの対応としてWaitForSeconds をグローバルで管理して使えるクラスを作成 これを利用すると WaitForSeconds…
WaitForSeconds、WaitUntil、WaitWhile などは YieldInstruction を継承したクラスで IEnumerator 内で待ちに利用するのに便利なのですが少し問題があります GC Alloc発生 このクラスは下記のような使い方をすることが多いと思うのですが この使い方をした場…
Strip Engine Code が 有効な場合 Unity は IL2CPP ビルド時に不要なコードを削除してくれます 対象となるのは ユーザーがプロジェクトに加えたアセンブリ Unity エンジンアセンブリ .NET クラスライブラリアセンブリ (例えば mscorlib.dll、System.dll) と…
Mesh Fileter の コンテキストメニューで「Save Mesh」を押すと保存先を指定し、Mesh を保存できる 例えば Cube の Mesh を保存するとちゃんと保存できている コード public static class MeshUtil { [MenuItem("CONTEXT/MeshFilter/Save Mesh")] private st…
テクスチャを UV スクロールする方法として * Shader を使う * スクリプトを使う の2種類がある Shader で UV スクロールしてる記事はあったが、スクリプトで UVスクロールしてる記事は見かけなかった Shader でUVスクロール GPU を利用して UVスクロールを…
検証 UnityUnity2019.3.5f1 MeshRenderer や SpriteRenderer など Material をアタッチできるコンポーネントには Material を取得する方法として、.material と .sharedMaterial の2つが存在します .material 呼び出したタイミングで 新しい Material を作成…
Unity2019.3から一部の GUI.skin の表示が変わったので、 Label Field での表示にはなるが違いを見てみたところ Runtimeでは差は無さそうだったので、Editor 拡張で使っている場合のみ修正が必要そう Unity2019.3 未満 Unity2019.3 以降 コード using UnityE…
生成コード 下記には記述していないが * EditorStyles.toolbarSearchField * EditorStyles.foldoutHeader * EditorStyles.foldoutHeaderIcon が2019.1~使えるようになっている private void OnGUI() { EditorGUILayout.LabelField("label", EditorStyles.lab…
生成コード private void OnGUI() { EditorGUILayout.LabelField("label", EditorStyles.label); EditorGUILayout.LabelField("miniLabel", EditorStyles.miniLabel); EditorGUILayout.LabelField("largeLabel", EditorStyles.largeLabel); EditorGUILayout.…
C# で扱える最大値は ulong の「18,446,744,073,709,551,615」(1,844京)ですが 基本的にはそんな値いかないと思うので int で実装することが多い ※理想は int よりも uint だが uint を使うと int を使うとキャストする必要があるため面倒 int の場合は最…
Inspector にオブジェクトをアタッチするのが面倒なことがあるので、 ボタンひとつで GetComponentInChildren してくれる拡張を作成 コード using System.Linq; using System.Reflection; using UnityEditor; using UnityEditor.IMGUI.Controls; using Unity…
enumPopup は数が多い場合探すのが面倒なので、検索窓付きの enum field を利用できる拡張を作成 コード using System.Linq; using UnityEditor; using UnityEditor.IMGUI.Controls; using UnityEngine; public class SearchableEnumAttribute : PropertyAtt…
UnityEditor の起動時にのみ処理を走らせたいと思い、処理を探していると公式の記事が見つかりました 起動時エディタースクリプト実行 - Unity マニュアル がこちらの記事は「起動時エディタースクリプト実行」とありますが、起動時以外にも コンパイルが走…