うにてぃブログ

主にUnityとC#に関する記事を書いていきます

2020-08-01から1ヶ月間の記事一覧

【go】private リポジトリを含む複数のリポジトリを管理するツールを作成してみました

Unity で開発をしている際に PackageManager を用いて 公開されているリポジトリの追加ができるようになりましたが private リポジトリは PackageManager で利用できません そのため private リポジトリを追加する方法を探していると下記事が見つかりました …

【Unity】スクリプトから Shader もしくは Material にパラメータを渡す

Shader には SetGlobalColor や SetGlobalVector また Material には SetColor や SetVector などパラメータを渡すためのメソッドが用意してあります Shader では そのパラメータを持っている すべての Shader に対して変更を行えます Material では その Ma…

【Unity】AStarアルゴリズムのサンプル

github.com A* のアルゴリズムを組んで見たくて wiki を参考に作成してみました A* - Wikipedia アルゴリズム アルゴリズムは wiki にあるとおりの順番で実装してあります 1 開始地点をオープン済みとして登録する 2 オープン済みのノードの中から一番コスト…

【Unity】指定した球の範囲のみ描画する Shader

昔マリオギャラクシーで一部分範囲だけ床が見えていて、見えている範囲が動き進んでいくステージがあったのを思い出し、 似たようなものが Shader で作れないかと思い作ってみました 処理は単純で pow(i.wpos.x - _Center.x, 2) + pow(i.wpos.y - _Center.y,…

【Unity】UnityEngine.UI.Image をアピールさせるコンポーネント

Image にコンポーネントを追加するだけで以下のようなアピール演出をできるコンポーネントを作成しました アピールの大きさ、時間、リピート、インターバルを設定できます using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; [Req…

【Unity】角丸UI を Shader で作成する

github.com 以前 角丸UI を作成した記事を公開しましたが、これだとメッシュが増えてしまうため Shader 側 で角丸を作成する UI を作りました 頂点データにパラメータをもたせているため Shader 側に 転送するデータ量が少し増えます hacchi-man.hatenablog.…

【Unity】AnimatorController の AnimationClip をスクリプトで変更する方法

using UnityEditor; using UnityEngine; using AnimatorController = UnityEditor.Animations.AnimatorController; public static class AnimatorUtility { public static bool ReplaceAnimationClip(string path, string replaceName, AnimationClip clip) …

【Unity】UnityEditor で 確認ダイアログを表示する

ボタンの文言も変えることができます OKボタンのみのダイアログ if (EditorUtility.DisplayDialog("Tile", "Body", "OK")) { Debug.Log("Click"); } Yes No のダイアログ if (EditorUtility.DisplayDialog("Tile", "Body", "Yes", "No")) { Debug.Log("Yes")…

【Unity】パスを指定してディレクトリを作成する

UnityProject 内部 で ディレクトリを作成する方法として AssetDatabase.CreateFolder と System.IO.Directory.CreateDirectory(path) の2つが存在します 2つの違いを以下のとおりです AssetDatabase.CreateFolder "Assets/" から始まるディレクトリパスを指…

【Unity】UnityProject 外のファイルを UnityProject にコピーする

UnityProject 内のファイル操作なら AssetDatabase を利用すれば可能ですが UnityProject 外からファイルを操作する場合は System.IO 系を利用する必要があり こちらはルートからのフルパスで指定する必要がある ※ AssetDatabase であれば "Assets/" から始…

【Unity】Git ツール機能追加 ~Serialize対応 と pull push, ショートカットの詳細~

hacchi-man.hatenablog.com 上記 Git ツールの機能追加を行いました Serialize対応 今までは、コンパイルが走ると Serialize に対応していなかったので、モードが違っていたりすると 毎回 Log ウィンドウから始まってしまうことがありましたが Serialize の…

【C#】ProcessStartInfo で スペースありの引数を渡す方法

C# 上でコマンドラインを実行するクラスとして ProcessStartInfo, Process があるのですが こちら引数に スペースありを渡した場合、 別のコマンドオプションと認識されてしまい正しい挙動をしなくなってしまいます // add /Assets/TextMesh Pro の3引数と認…

【Terminal】zsh から bash に戻す方法

ターミナルを開くと下記のような文言が出ていたので、特に気にせず実行しところ The default interactive shell is now zsh. To update your account to use zsh, please run `chsh -s /bin/zsh`. For more details, please visit https://support.apple.com…

【go】exec.Command で git の private repository にアクセスできない問題

git のツールを go lang で作成していたのですが git clone のコマンド時に下記エラーが発生しました cmd := exec.Command("git", "clone", "--quiet", repo, path) ERROR: Repository not found. fatal: Could not read from remote repository. Please mak…

【Unity】Git ツールの改修 ~クリック処理とショートカット一覧, スペース入ファイルの対応~

hacchi-man.hatenablog.com 引き続き上記 Git ツールの改修を行いました ダブルクリック処理 今までは選択した後、Enter を押す必要がありましたが ダブルクリックでも Enter と同じ挙動をするように対応しました ショートカット一覧表示 現在のモードや、ど…

【Unity】色別の GUIStyle をキャッシュするクラス

複数色の GUIStyle を使いまわしたいときに キャッシュして利用したいので、キャッシュ用クラスを作成してみました using System.Collections.Generic; using UnityEditor; using UnityEngine; public static class ColorLabel { private static Dictionary<Color, GUIStyle> </color,>…

【Unity】Git ツール機能追加 ~ブランチ機能~

hacchi-man.hatenablog.com 上記ツールにブランチ機能を追加しました b を押すことでブランチ一覧が表示されます ブランチの切り替え ブランチの切り替えは、w で変更することができます この際に差分があればダイアログが表示され、Yes を押すと stash して…

【Unity】UnityEditor 上で git 操作できるツールを作成

github.com いつもは Terminal を利用して git を操作していますが まれにファイルを探したりするときにファイル名をコピーして、検索が面倒だったりすることがある もしかしたら、UnityEditor 上で git 操作できれば手軽になるんじゃないかと思い作成してみ…

【Unity】スクリプトから エディタ を開く

InternalEditorUtility.OpenFileAtLineExternal を利用することで Unity の Preferences に設定してある External Script Editor をスクリプトから開くことができます Unity内の利用例で言うと、Consoleをクリックしたときの処理はこちらのメソッドを利用し…

【Unity】EditorGUI で テキストフィールドにフォーカスする方法

EditorGUI.FocusTextInControl に GUI.SetNextControlName で指定した名前を渡すことでフォーカスさせることができる private string _text; private void OnGUI() { GUI.SetNextControlName("CommitMessage"); _text = EditorGUILayout.TextField(_text); i…

【C#】特定のクラスを継承した全クラスのインスタンスを作成する

このコードは BindingFlags フラグに対応していないので internal クラスの場合インスタンスが生成できなくなるので注意 internal クラスの場合はインスタンス作成時に引数がかなければ Activator.CreateInstance(t, true) で作成できる using System; using…

【Unity】UnityEditor で動作する ターミナル を作成する

※ Mac OS でのみ動作確認を行いました Process.Start を利用することで C# のコード上でも ターミナル(コマンドライン?)を実行することができるので UnityEditor 上で ターミナル的なことができるか試してみました ProcessStartInfo.filename にはフルパ…

【Unity】アルファテクスチャを利用できる Shader

通常テクスチャを表示する Shader では Alpha のあるテクスチャを利用すると 下図のようにAlpha部分は無く表示がおかしくなってしまいます Shader "Custom/Texture" { Properties { [NoScaleOffset] _MainTex("Texture", 2D) = "white" {} } SubShader { Tag…

【Unity】頂点カラーとテクスチャを乗算する Shader

頂点カラーとテクスチャの乗算色を表示する Shader Shader "Cust/TextureAndVertexColor" { Properties { [NoScaleOffset] _MainTex("Texture", 2D) = "white" {} } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "Unit…

【Unity】頂点カラー Shader

頂点カラーのみを表示する Shader Shader "Custom/VertexColor" { SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float4 color: COLOR; }; struct v2f { f…

【Unity】単純なメッシュを作成するツール

github.com 単純な形のメッシュがほしい際に、UnityEditor上で作成できるツールを作りました Vetex, UV, Color の調整が可能で、同一頂点を使用するようにしたり、頂点の描画順も変更できます 使い方 を押すことで、3つの頂点情報がまとまって作成されます …

【Unity】GUILayoutOption のキャッシュクラス

GUILayoutOption は キャッシュして使うべきだが、毎度キャッシュ処理を書くのが面倒なので キャッシュ用のクラスを作成、WidthとHeightしか対応していないため、その他の場合は別のキャッシュ機構が必要になる internal static class CacheOption { private…

【Unity】EditorWindow を UnityEditor の中心に持ってくる処理

EditorWindow を取得して CenterOnMainWin を呼び出せば中心に持ってこられる var window = GetWindow<SampleEdiorWindow>(); window.CenterOnMainWin(); public static class EditorWindowExtensions { public static void CenterOnMainWin(this EditorWindow self) { var main</sampleediorwindow>…

【Unity】PlayableGraph を利用した AnimationClip を再生するコンポーネント

AnimationClip を 一つだけ再生する場合でも Animator を作成して Stateを作り AnimationClip を設定する必要があるのが面倒だったので、PlayableGraph を利用して AnimationClip のみセットすれば動作するコンポーネントを作成 ※ Animation というコンポー…

【Unity】Asset のパスを表示する CustomAttirbute

using UnityEngine; public class PathAttribute : PropertyAttribute { } using UnityEditor; [CustomPropertyDrawer(typeof(PathAttribute))] public class PathAttributeDrawer : PropertyDrawer { public override void OnGUI(Rect position, Serialized…