うにてぃブログ

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

2021-01-01から1年間の記事一覧

【Unity】PresetEditor を拡張する

Unity2020 から Preset に更新しないような設定をすることが可能になった 更新しない値には左側に赤い色がつく これを全部更新しないようにしたり、更新するようにしたい場合は Menu からやるんですが この一手間が面倒だったのでボタンにしてみました Prese…

【C#】==演算子 と Equals について読み解く

変数を比較する際に == や Equals を利用しますが、正しく内部処理を理解してなかったので各型による挙動を調査しました int の比較 int intValue1 = 10; int intValue2 = 10; Console.WriteLine($"{intValue1 == intValue2}"); // true Console.WriteLine($…

【Unity】Editor 上で再生停止を繰り返す

スクリプトから UnityEditor を再生する場合は以下の処理をすればよい EditorApplication.isPlaying = true; しかし、UnityEditor が再生されるタイミングで、static なインスタンスが初期化されるため、Unity API にイベントを登録してあったとしても消えて…

【Unity】PackageManager 用のサンプルを Unity に表示させない

以下の記事の通りにすれば PackageManager にサンプルを導入できる hacchi-man.hatenablog.com 問題 Packages 以下にサンプルがそのまま表示されてしまっている そのため、サンプルフォルダがビルドに含まれてしまったり、参照が残ったりと意図しない挙動を…

【Unity】一覧からアセットを選択するツール

Unity では以下のようにAsset を一覧から選択して Export することができます この際に表示されるモーダルウィンドウは他でも利用できるんじゃないかと思い、自作してみたのが以下になります 導入 Github github.com PackageManager https://github.com/yayo…

【Unity】ScriptableSingleton のデータを永続化する

ScriptableSingleton のデータをEditorを終了しても確保する場合、独自に保存処理を記述する必要がありました。しかし、Unity2020.1 から FilePathAttribute が追加され、これを利用することで永続化することが可能になりました。 ※こちらは2020.3.14f1での…

【Unity】EditorWindow をモーダルとして表示する際の問題

EditorWindow クラスに以下のメソッドがあったため、これを利用すればモーダルウィンドウとして表示できると思い利用してみたところ、TreeView が想定と異なる挙動をしたためその解決方法を記述します /// <summary> /// <para>Show the EditorWindow as a floating modal w</para></summary>…

【Unity】指定したアセットの依存一覧を表示する

複合アセットバンドルで、原因不明の依存があった際にどのファイルが参照を持ってるか調べられるようなツールを作成しました アセットの依存一覧を表示し、利用しているアセットを見れるようにしてあります 使い方 Tools/Yorozu/DependencyMap より Window …

【Unity】Google Drive API を利用して Google Drive や SpreadSheet にアクセスするライブラリ

Unity から Google Drive を利用したいと思い調べていると NuGet の導入が必要とのことで 個人的に面倒だったので自前で作ってしまえばいいじゃんということで作成しました 対応機能 SpreadSheet の読み書き ディレクトリ一覧の表示 画像のロード 公開されて…

【Google Drive API】クライアントID と クライアントシークレットを取得する

Google Drive や Google SpreadSheet など Google Drive API から利用する際に、公開されているものであれば問題無いのですが、公開されていないファイルにアクセルする場合には権限を持ったアカウントに紐付いている クライアントID と クライアントシーク…

【Unity】Texture を加工するツールの改良

以前作成していたテクスチャ加工の使い勝手を向上して機能を追加しました ※Texture2D.SetPixels を利用している都合上 RGBA32, ARGB32, RGB24, Alpha8 の フォーマットのテクスチャにのみ利用できます 導入 Github github.com PackageManager 「Add package …

【Unity】データを保存管理するライブラリ

データを保存管理するライブライブラリを作成していなかったので作成してみました データの保存は PlayerPrefs と ファイル出力の2つの方法から選べます また、保存時に AES 暗号を利用して暗号化することもできます 導入 Github github.com PackageManager …

【Unity】uGUI で時計盤を作る

時計盤を作成することがあったので実装をこちらにメモしておきます 特殊な実装はしていないのでスクリプトを読めばだいたい理解できると思います スクリプト using System; using UnityEngine; using UnityEngine.UI; public class UIClock : MonoBehaviour …

【Unity】ProjectWindow のフォルダ色やアイコンを変える

フォルダの色を変えられるアセットを見て、どうやったら作れるかと思い見様見真似で作成してみました よければご利用ください、個人的には色が変わるだけで結構使いやすくなったなと感じました ※仕組み的に表示を切り替えるということはできなかったため上に…

【Unity】パッケージが既存のパッケージと競合するため、アプリをインストールできませんでした【Android】

今までとは異なる PC で Unity Project を Clone し 「Build And Run」を行ったところ、以下のエラーが表示されインストールすることができませんでした CommandInvokationFailure: Unable to install APK to device. Please make sure the Android SDK is i…

【Unity】uGUI 用 Dissolve Shader

ノイズテクスチャを使って uGUI で Dissolve っぽい表現をやってみたかったので Unity2020 の uGUI Shader をもとに作成してみました 使い方 以下の Shader を作成してから、以下のコンポーネントを Image がある GameObejct に追加し よしななノイズテクス…

【Unity】ショートカットまとめ ~Mac~ 【2020.3】

Mac版 Unity2020.3.14f1 で確認したショートカットをまとめました Scene キー Command 機能 Cmd + N Open New Scene 空のシーンを開く Cmd + O Open Select Scene シーンを選んで開く Cmd + S Save シーンを保存 Cmd + Shift + S Save Scene as シーンを別名…

【Unity】テクスチャを分割するツール

画像を探していると、複数の画像がまとまっていることがありその一部だけ使いたかったことがあったので 画像を分割するツールを作成しました 分割数を指定することで を のように分割することができます スクリプト using System.IO; using UnityEditor; usi…

【Unity】LineRenderer.SetPositions の注意

LineRenderer.SetPositions は Vector3 の配列を渡すことで、Line の座標を一括でセットできるメソッドです /// <summary> /// <para>Set the positions of all vertices in the line.</para> /// </summary> /// <param name="positions">The array of positions to set.</param> public extern void SetPositions([NotNull("…

【Unity】Gradient で色相関パターンの色を設定する

ランダムで色がほしいときに、色相環から色を取得すると便利だと思ったので Gradient の Color Key をよしなに設定してランダムに色を取得できるようにしてみました スクリプト using UnityEngine; public static class GradientExtension { /// <summary> /// 色相環</summary>…

【Unity】テクスチャの輪郭を抽出する

こちら を参考に輪郭抽出アルゴリズムを用いて テクスチャの輪郭を抽出できるライブラリを作成しました github.com 「いらすとや」さんの素材をお借りして、ライブラリを使うと このように上記画像の輪郭を抜き出したり、輪郭を合成することができます 以下…

【Unity】Texture2D の Read/Write Enable を変更せずに GetPixel する

通常 Texture2D からピクセル情報を取得する場合には、Read/Write Enable を true にする必要があります こうしないと以下のエラーが出てしまします UnityException: Texture 'Hoge' is not readable, the texture memory can not be accessed from scripts.…

【Unity】特定の状況で GraphicRaycaster の enable を変更するとタップの順番が変化する

特定の状況で GraphicRaycaster の enable を切り替えると、 タップ判定が変わることがあったため、その状況と原因について記述する 以下のオブジェクトの配置で 以下のコンポーネントがついている状態で確認する Rootのコンポーネント Canvas1, Canvas2 の…

【Unity】Texture2D の原点を調べる

Texture2D の原点を調べたかったので、以下のコードで0に近いほうが黒くなるテクスチャを出力してみる var texture2D = new Texture2D(256, 256, TextureFormat.RGBA32, false); for (var x = 0; x < 256; x++) { for (var y = 0; y < 256; y++) { var v = (…

【Unity】GameObject をアクティブにして Animation が呼ばれるまでの遅延を確認する

演出を作成時に GameObject をアクティブにして演出を再生させたい場合表示がちらつくことがある おそらくこれは、GameObject の 表示のタイミングと Animation の再生されるタイミングが同時じゃないから発生してると思われる そのためどれくらい遅延してる…

【アドベントカレンダー2021】Unity & C#

去年は連日投稿していたのですが、今年はできなかったので アドベントカレンダーだけでも完走したいと思い作成しました 内容は全部濃いものは無理だと思いますが、25記事書けるように頑張ります 日にち 内容 1 GameObject をアクティブにして Animation が呼…

【C#】ひらがなをカタカナに変換したり、カタカナをひらがなに変換する

C#

リンクより、ひらがな・カタカナは「あ」から始まり「ゖ」で終わることが分かる これを参考に、ひらがなをカタカナに変換したり、カタカナをひらがなに変換するクラスを作成すると以下になる using System.Text; public static class StringUtility { privat…

【Unity】uGUI 要素の Order In Layer を表示する拡張

Canvas を複数使っている場合、途中で Override Sorting されていた場合 今の Order In Layer を調べるのが手間なことがある そのため、uGUI で描画されるオブジェクトには必ずついている Canvas Renderer の Inspector を拡張し現在の Order In Layer を表…

【Unity】RectTransform の範囲内で重ならないようにランダムで配置する

親の RectTransform 内に重複を考慮せずに、ランダムに配置した場合は 下図のように重複してしまう場合がある そのため、重複しないようにランダムに配置するスクリプトを作成した これにより、上図のように配置することができる もちろん、配置する数が多す…

【Unity】Android 実機での NotSupportedException

Mecab を Android で試そうと思い導入し、ビルドして実機確認を行うと NotSupportedException: System.Condiguration.Applicationsettingsbase のエラーが出て利用することができなかった このエラーについて調べてみると 呼び出されたメソッドがサポートさ…