はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

Unity

【Unity】MonoBehaviourを継承したクラスにコンストラクターを書いたときの挙動(シリアライズ化のタイミング)

はじめに MonoBehaviorを継承したクラスの初期化はAwakeやStartに書くと思うのですが、実はコンストラクターも一応動作します。 public class Sample : MonoBehaviour { public Sample() { Debug.Log("コンストラクター"); } } ただこの挙動については皆さん…

【Unity,c#】Doxygenで指定のフォルダを解析しないように除外する手順

はじめに 前にDoxygenを使ってドキュメントを生成する記事を書いたのですが、Unityでは外部から導入したファイルの説明も含まれていて分かりづらいと言われてしまいました。 www.hanachiru-blog.com ですので今回は指定フォルダを解析しないように除外する手…

【Unity】返り値を利用しないと警告がでるようになるMustUseReturnValue属性(特にIDisposableのとき便利)

はじめに 今回はMustUseReturnValue属性について紹介したいと思います。pleiades.ioただこの機能はRiderでないと警告はでなく、Visual Studioで確認してみたところ警告が表示されたりエラーになったりもしませんでした。 はじめに 使い方 実際の様子 使い方 …

【Unity】MonoBehaviour.OnValidate()とMonoBehaviour.Reset()でコンポーネントのプロパティの設定を楽にする

はじめに 今回はMonoBehaviour.OnValidate()とMonoBehaviour.Reset()について取り上げたいと思います。MonoBehaviour-Reset() - Unity スクリプトリファレンス MonoBehaviour-OnValidate() - Unity スクリプトリファレンスこれらのメソッドを利用することで…

【Unity】Regex.00を利用した正規表現の結果を手軽に見れるエディタ拡張を作った

はじめに 正規表現がちゃんと書けているかのチェックにいつも時間がかかっていたので、それをなるべく簡単に確認できるようなエディタ拡張をつくってみました。github.com はじめに 使い方 さいごに 使い方 メニューバーからTools -> RegularExpressionWindo…

【Unity】Test Runnerでprivateメソッドもテストしちゃうよ

はじめに 今回はUnityのTest Runnerを使って、privateなメソッドもテストしちゃおうという記事になります。まあ簡単に言うとリフレクションを使ってアクセスするだけではありますが、覚えておいて損はないと思います。 はじめに やり方 解説 さいごに やり方…

【Unity】URPのプロジェクトでLight2Dを使い始めるまでの手順

はじめに 今回はURPのプロジェクトにLight2Dを使えるようにするための手順を書いておきたいと思います。 Light2Dを利用した例 はじめに 環境 手順 UniversalRenderPipelineAsset作成 2DRendererData作成 RenderListに設定 Scriptable Render Pipeline Settin…

【Unity】DoTweenにAssembly Definitionファイルがないとお困りの方、公式が生成ボタンを用意してくれてます

はじめに DoTweenにAssembly Definitionファイルないやないかい!!と思っていましたが、どうやら公式がしっかりと生成する処理を作っておいてくれていたみたいです。 同じ犠牲者がいないように、書き残しておきます。 はじめに 対処法 対処法 メニューバー…

【Unity,c#】Doxygenを使ってプロジェクトのドキュメントを自動生成する

はじめに 今回はDoxygenというツールを使って以下の画像のようなドキュメントを生成してみたいと思います。 ドキュメント例 はじめに Doxygenをインストールする GUIツールの概要 生成する さいごに Doxygenをインストールする まずはDoxygenをインストール…

【Unity】Screen.sleepTimeoutでスマホの画面が暗くならないようにする

はじめに 今回はiOS・Androidにて画面をスリープ状態にさせないようにしたいと思います。 はじめに やり方 一工夫してみる さいごに やり方 既にUnityがそれ用のAPIを用意してくれているので、そちらを使えばOKです。 UnityEngine.SleepTimeout - Unity スク…

【Unity】ゲームオブジェクトのナンバリング方法を変更する(Numbering Scheme)

はじめに 今回はゲームオブジェクトを複製したときに、Unityが自動でナンバリングしてくれるときの命名方法を変更したいと思います。 ゲームオブジェクトのナンバリングを変更する はじめに 変更方法 各プロパティ解説 変更方法 メニューバーよりEdit -> Pro…

【Unity】Unity2020.1からの新機能Profiling CoreでProfilerに独自のカウンターを追加する(ProfilerCounter, ProfilerCounterValue)

はじめに 今回はUnity2020.1からの新機能であるProfiling Coreを利用して、Profilerに独自のカウンターを追加してみたいと思います。またビルドしたときにパフォーマンスに影響がでてしまうのでは…とお考えの奥様、そこはしっかりとビルド時にコンパイルされ…

【Unity】Unityを強制クラッシュさせるUtils.ForceCrashメソッドについて

はじめに 今回はUnityを強制クラッシュさせるUnityEngine.Diagnostics.Utils.ForceCrash()について紹介したいと思います。 はじめに 使い方 iOSでクラッシュ時のハンドリング クラッシュ時のハンドリング 使い方 public static void ForceCrash (Diagnostics…

【Unity】変数名を変えてもインスペクターの値を引き継ぐFormerlySerializedAsAttributeについて

はじめに 今回は変数名を変えてもインスペクターの値を引き継ぐFormerlySerializedAsAttribute属性を紹介したいと思います。docs.unity3d.com はじめに 使い方 さいごに 使い方 使い方は簡単で、変更する変数名に属性を追加します。 [SerializeField] privat…

JetBrains Rider2020.1.3以降は日本語化対応されていない件(2021/9/7)

はじめに 久しぶりにRiderを導入して日本語化対応しようとしたらつまづいてしまいました。 Riderはいいぞ! from UnityTechnologiesJapan002 www.slideshare.netそこで調べたことを備忘録の意味合いも兼ねて残しておきたいと思います。 はじめに Riderを導入…

【Unity】MaterialにNormalMapを設定することで見た目をクオリティーアップさせる

はじめに 今回はNormalMapについて取り上げたいと思います。 左: NormalMapあり,右: NormalMapなしNormalMapを使うことでモデルの表面の法線を設定することができ、光の反射の仕方などに影響を及ぼすことができます。また実際にメッシュに凹凸をつけたりす…

【Unity】PlayerLoopを使って毎フレーム実行される関数を追加する

はじめに 今回はPlayerLoopについて紹介し、実際に独自の処理を追加してみたいと思います。 はじめに PlayerLoopとは PlayerLoopSystem PlayerLoopの中身自体を書き換える 独自の処理を追加する さいごに PlayerLoopとは PlayerLoopについて公式ドキュメント…

【UniRx】AsyncSubject<T>を使ってOnCompletedされたときに最後に入力された値を出力する

はじめに 今回はAsyncSubject<T>について実際のコードも触れながら解剖していきたいと思います。github.com はじめに 使い方 仕組み さいごに 使い方 AsyncSubjectはOnCompletedされたときに最後にOnNextされた値を出力します。 [Test] public void AsyncSubjec</t>…

【UniRx】IEnumerable<T>.ToObservable<T>を使って値を順番に発行するObservableに変換する

はじめに 今回はIEnumerable<T>.ToObservable<T>について取り上げたいと思います。github.com はじめに 使い方 仕組みについて さいごに 使い方 IEnumerableを実装しているオブジェクト,いわゆるデータの集まりを指すコレクションに対してToObservableメソッドを</t></t>…

【UniRx,UniTask】IObservable.ToUniTaskメソッドをうまく使いこなそう

はじめに 今回はIObservable.ToUniTaskメソッドについて紹介をしたいと思います。このメソッドを使う事でIObservableを実装しているオブジェクトに対して、OnNextもしくはOnCompletedがされるまで処理を待つようなUniTaskに変換することができます。github.c…

【Unity】ProGridsの導入方法から使い方まで

はじめに 今回はProGridsという公式アセットについて紹介したいと思います。docs.unity3d.com ProGridsを用いることでシーンビューにてグリッドを使ってオブジェクトを配置させることができます。www.youtube.com はじめに 導入方法 表示されないとき ProGri…

【Unity,UniTask】TestRunnerでasync/awaitを使った非同期処理のテストはUniTask.ToCoroutineを使うと簡単

はじめに 今回はasync/awaitのテストについて取り上げたいと思います。今までTask.Runを使ってみたりでなんとか対応させていましたが、UniTask.ToCoroutineを使うことでもっとスマートに書けることを後輩に教えてもらいました。github.com一応公式のGitHubに…

【UniTask】AsAsyncUnitUniTaskを使ってUniTaskからUniTask<AsyncUnit>に変換をする

はじめに 今回はAsAsyncUnitUniTaskを紹介したいと思います。突然ですが、UniTaskを利用していて以下のような状態になっとことはないでしょうか。 // 完了済のUniTaskを生成(awaitした瞬間10が返ってくる) UniTask<int> task1 = UniTask.FromResult(10); // 1フレ</int>…

【UniTask】UniTaskCompletionSourceを使って好きなタイミングで結果を確定させるUniTaskを生成する(ついでにUniTask.Voidの紹介)

はじめに 今回はUniTaskCompletionSourceについて紹介したいと思います。github.comUniTaskCompletionSourceを使うことで好きなタイミングで結果を確定させるUniTaskを生成することができます。早速見ていきましょう。 はじめに UniTaskCompletionSource Uni…

【Unity】Aspect Ratio Fitterを使って画像のアスペクト比を一定にしながらサイズを変更する

はじめに 今回は画像のアスペクト比を一定にすることができるAspect Ratio Fitterコンポーネントについて紹介したいと思います。 Aspect Ratio Fitterの有無早速みていきましょう。 はじめに Aspect Ratio Fitter Width Controls Height Height Controls Wid…

【UniRx, UniTask】ReactivePropertyをawaitしたらどうなるか(awaitした後ReactivePropertyの値が変わるまで)

はじめに UniRxを使っていたところ、PeactivePropertyをawaitしたらどうなるか気になりました。そこで今回は実験していきたいと思います。 はじめに ReactivePropertyをawaitする Observableをawaitする さいごに ReactivePropertyをawaitする 結論からいう…

【UniTask】SuppressCancellationThrowを使ってキャンセルを返り値として取り出す

はじめに 今回はSuppressCancellationThrowについて触れていきたいと思います。SuppressCancellationThrowの使い場面は簡単に言うと、タスクがキャンセルされたかどうかを返り値として取り出す場合です。 // 通常 try { await NormalTask(ctx.Token); } catc…

【C#,Unity】DIコンテナを使う前にPoor man’s dependency injectionを検討してみてはどうでしょうか

はじめに UnityでDI ContainerといったらZenjectやExtenject,VContainerあたりが有名ですよね。Dependency Injectionパターンを利用する場合は誰がインスタンスを生成・注入するかが難しい問題になりますが、その解決法の一つとしてDI Containerが利用され…

【Unity】ShaderGraphでCustomFunctionNodeを用いてガウシアンフィルタを作成する

はじめに 今回はShaderGraphのCustomFunctionNodeを使ってみようという記事になります。docs.unity3d.comCustomFunctionNodeは一言で言えば、自分で動作を記述することができるノードということでしょうか。細かい説明はそれぞれの箇所でしますが、今回目的…

【Unity】ShaderGraphでDissolveシェーダーを作って優勝するわね

はじめに 先日このようなものを作ってみました。キャラクターにDissolveシェーダーを適応してみました作るのが簡単な割に良い感じに見えるからコスパが良し pic.twitter.com/2NKiMN8l3f— はなちる@ゲーム制作 (@hanaaaaaachiru) June 2, 2021 Dissolveシェー…