searchカテゴリー選択
chevron_left

メインカテゴリーを選択しなおす

カテゴリーのご意見・ご要望はこちら
cancel
プロフィール
PROFILE

はなちるさんのプロフィール

住所
未設定
出身
未設定

自由文未設定

ブログタイトル
はなちるのマイノート
ブログURL
https://www.hanachiru-blog.com/
ブログ紹介文
Unityをメインに扱う技術ブログ。 Twiter等で「はなちる」という名前で活動をしています。
更新頻度(1年)

103回 / 365日(平均2.0回/週)

ブログ村参加:2020/03/05

本日のランキング(IN)
フォロー

ブログリーダー」を活用して、はなちるさんをフォローしませんか?

ハンドル名
はなちるさん
ブログタイトル
はなちるのマイノート
更新頻度
103回 / 365日(平均2.0回/週)
フォロー
はなちるのマイノート

はなちるさんの新着記事

1件〜30件

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

    はじめに 今回はUnity2020.1からの新機能であるProfiling Coreを利用して、Profilerに独自のカウンターを追加してみたいと思います。またビルドしたときにパフォーマンスに影響がでてしまうのでは…とお考えの奥様、そこはしっかりとビルド時にコンパイルされないようになっているのでご安心を。 Both ProfilerCounter and ProfilerCounterValue are compiled out in non-development builds. Profiler counters API guide | Unity Profiling Core API …

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

    はじめに 今回はUnityを強制クラッシュさせるUnityEngine.Diagnostics.Utils.ForceCrash()について紹介したいと思います。 はじめに 使い方 iOSでクラッシュ時のハンドリング クラッシュ時のハンドリング 使い方 public static void ForceCrash (Diagnostics.ForcedCrashCategory crashCategory); Diagnostics.Utils-ForceCrash - Unity スクリプトリファレンスこちらのメソッドを利用するとアプリケーションがクラッシュします。また引数のDiagnosti…

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

    はじめに 今回は変数名を変えてもインスペクターの値を引き継ぐFormerlySerializedAsAttribute属性を紹介したいと思います。docs.unity3d.com はじめに 使い方 さいごに 使い方 使い方は簡単で、変更する変数名に属性を追加します。 [SerializeField] private int hp; ↓ [SerializeField, FormerlySerializedAs("hp")] private int mp; 結果 さいごに 最近インターンで忙しく記事の質が下がっている気がしますが、マイペースに投稿を目標にブログ運営させているのでご容赦ください。で…

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

    はじめに 久しぶりにRiderを導入して日本語化対応しようとしたらつまづいてしまいました。 Riderはいいぞ! from UnityTechnologiesJapan002 www.slideshare.netそこで調べたことを備忘録の意味合いも兼ねて残しておきたいと思います。 はじめに Riderを導入 外部から日本語パックを取得する 最近のRiderは日本語対応されていないみたい Riderを導入 以前記事にも書いたのですが、そちらも手順を踏みながらRiderをインストールしました。www.hanachiru-blog.com以前はRider内でJapanese Language Pac…

  • Clean Architecture第7章「単一責任の原則(SRP)」の個人まとめ

    はじめに 現在Clean Architectureという本を読んでいるのですが、備忘録の意味合いも兼ねてまとめてみたいと思います。今回は単一責任の原則(SRP)についてみていきます。 はじめに 単一責任の原則とは? 感想 単一責任の原則とは? 単一責任の原則(SRP)とは「モジュールはたったひとつのアクターに対して責務を負うべきである」というもの。ここでいうアクターとは変更を望む人たちをひとまとめにしたグループである。モジュールというのはソースファイル,いくつかの関数やデータをまとめた凝集性のあるものを指す。 リファクタリング例 感想 「アクターの異なるコードは分割するべき」というアクター目線…

  • Clean Architecture第5章「オブジェクト指向プログラミング」の個人まとめ

    はじめに 現在Clean Architectureという本を読んでいるのですが、備忘録の意味合いも兼ねてまとめてみたいと思います。今回はオブジェクト指向プログラミングについてみていきます。 はじめに オブジェクト指向とは? 依存関係逆転 個人的な感想 オブジェクト指向とは? オブジェクト指向とは「ポリモーフィズムを使用することで、システムにあるすべてのソースコードの依存関係を絶対的に制御する能力」である。よくオブジェクト指向の性質を「カプセル化」・「継承」・「ポリモーフィズム」と表現されるが、これらは以前から実現・利用されていたものでありオブジェクト指向言語の固有の特徴ではない。ただし「ポリモ…

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

    はじめに 今回はNormalMapについて取り上げたいと思います。 左: NormalMapあり,右: NormalMapなしNormalMapを使うことでモデルの表面の法線を設定することができ、光の反射の仕方などに影響を及ぼすことができます。また実際にメッシュに凹凸をつけたりすればいいのではないかと思われるかもしれませんが、公式ドキュメントには以下のように書かれています。 このような場合に、そんな小さなディティールを “実際の” ジオメトリで作成するのは、通常、よい方法ではありません。右側に、ディティールのネジ一個を作成するのに必要なポリゴン数が表示されています。実際にモデル表面にディティー…

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

    はじめに 今回はPlayerLoopについて紹介し、実際に独自の処理を追加してみたいと思います。 はじめに PlayerLoopとは PlayerLoopSystem PlayerLoopの中身自体を書き換える 独自の処理を追加する さいごに PlayerLoopとは PlayerLoopについて公式ドキュメントでは以下のように記載されています。 This class contains functions for interacting with the player loop in the core of Unity. You can use this class to get the up…

  • 【C#】複数のCancellationTokenを合成したCancellationTokenSourceを生成する

    はじめに 今回は複数のCancellationTokenが存在したとき、いずれか一つでもキャンセルされればキャンセル状態になるCancellationTokenSourceを生成したいと思います。docs.microsoft.com はじめに やり方 やり方 実現するためにはCancellationTokenSource.CreateLinkedTokenSourceというメソッドを利用します。 public static System.Threading.CancellationTokenSource CreateLinkedTokenSource (System.Threading.Can…

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

    はじめに 今回はAsyncSubject<T>について実際のコードも触れながら解剖していきたいと思います。github.com はじめに 使い方 仕組み さいごに 使い方 AsyncSubjectはOnCompletedされたときに最後にOnNextされた値を出力します。 [Test] public void AsyncSubjectTest() { var asyncSubject = new AsyncSubject<int>(); var result = 0; // asyncObjectがOnCompletedされたとき,Subscribeの引数が実行される asyncSubject…

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

    はじめに 今回はIEnumerable<T>.ToObservable<T>について取り上げたいと思います。github.com はじめに 使い方 仕組みについて さいごに 使い方 IEnumerableを実装しているオブジェクト,いわゆるデータの集まりを指すコレクションに対してToObservableメソッドを実行することで、Subjscribeをした際に値を順番に発行することができます。 [Test] public void ToObservableTest() { var values = new[] {1, 2, 3, 4, 5, 6}; var result = 0; // Subs…

  • 一般大学生の自作ゲームがGoogle Play Indie Games Festival 2021 トップ 20選んでいただけたので色々書き殴る

    はじめに この度、私が作った「クローズドサークルからの脱出」というゲームをGoogle Play Indie Games Festival 2021のトップ20に選出していただきました。 Indie Games Festival 2021のトップ20【#IndieGamesFestival 2021】Google Play l Indie Games Festival 2021 のトップ 20 選出作品発表!ダウンロードしてお気に入りのゲームをみつけてください!ファイナル イベントは 9月4日開催です。https://t.co/M3HhLJZIzR pic.twitter.com/rV2G31…

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

    はじめに 今回はIObservable.ToUniTaskメソッドについて紹介をしたいと思います。このメソッドを使う事でIObservableを実装しているオブジェクトに対して、OnNextもしくはOnCompletedがされるまで処理を待つようなUniTaskに変換することができます。github.com はじめに 使い方 ざっと仕組みについて 使い方 まずはメソッドを使う上でシグネチャを確認してみましょう。 public static UniTask<T> ToUniTask<T>(this IObservable<T> source, bool useFirstValue = false…

  • 【C#, IL】C#の中間言語ILを読めるようになりたい(SharpLabの紹介)

    はじめに 私は普段Unityを触っているのですが、Unityのライブラリとして有名なUniRx・UniTaskを作られたneueccさんはIL単位での最適化も行なっているそうです。www.youtube.comいやはや凄すぎて良く分からない世界になってきました。ただ少しでもC#をうまく活用していくために勉強していきたいと思います。 はじめに SharpLab 簡単なコードで試してみる 値型と参照型 さいごに SharpLab C#のコードがどのようにILに変換されているかを知るためには、SharpLabというブラウザ上で動作するエディタを活用すると便利です。sharplab.io SharpL…

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

    はじめに 今回はProGridsという公式アセットについて紹介したいと思います。docs.unity3d.com ProGridsを用いることでシーンビューにてグリッドを使ってオブジェクトを配置させることができます。www.youtube.com はじめに 導入方法 表示されないとき ProGrids Windowの立ち上げ方 使い方 さいごに 導入方法 ProGridsはPackageManagerからインストール可能です。PackageMangaer を開き,ProGridsを検索、インストールしてください。 ProGrids 表示されないとき ProGridsは執筆時(2021/7/18…

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

    はじめに 今回はasync/awaitのテストについて取り上げたいと思います。今までTask.Runを使ってみたりでなんとか対応させていましたが、UniTask.ToCoroutineを使うことでもっとスマートに書けることを後輩に教えてもらいました。github.com一応公式のGitHubにも記載されている(全く気づきませんでした…)のですが、こちらでも紹介したいと思います。 はじめに コード 注意点 コード 実際にコードを見てもらった方が早いと思うので、載せます。 public class UniTaskTest { [UnityTest] public IEnumerator ToCor…

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

    はじめに 今回はAsAsyncUnitUniTaskを紹介したいと思います。突然ですが、UniTaskを利用していて以下のような状態になっとことはないでしょうか。 // 完了済のUniTaskを生成(awaitした瞬間10が返ってくる) UniTask<int> task1 = UniTask.FromResult(10); // 1フレーム待ち、デバッグをする処理 UniTask task2 = UniTask.Create(async () => { await UniTask.Yield(); Debug.Log("Hello"); }); var (result1, _) = awai…

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

    はじめに 今回はUniTaskCompletionSourceについて紹介したいと思います。github.comUniTaskCompletionSourceを使うことで好きなタイミングで結果を確定させるUniTaskを生成することができます。早速見ていきましょう。 はじめに UniTaskCompletionSource UniTask.Void UniTaskCompletionSource UniTaskCompletionSourceの使い方new UniTaskCompletionSource()からTrySetResult(), TrySetCanceled(), TrySetEx…

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

    はじめに 今回は画像のアスペクト比を一定にすることができるAspect Ratio Fitterコンポーネントについて紹介したいと思います。 Aspect Ratio Fitterの有無早速みていきましょう。 はじめに Aspect Ratio Fitter Width Controls Height Height Controls Width Fit In Parent Envelope Parent Aspect Ratio Fitter Aspect Ratio Fitter は冒頭でも述べたように、アスペクト比(widthとHeightの比率)を一定に強制的にする機能になります。Asp…

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

    はじめに UniRxを使っていたところ、PeactivePropertyをawaitしたらどうなるか気になりました。そこで今回は実験していきたいと思います。 はじめに ReactivePropertyをawaitする Observableをawaitする さいごに ReactivePropertyをawaitする 結論からいうと、awaitした後からReactivePropertyの値が変わるまで待ちます。 private async void Start() { var reactiveProperty = new ReactiveProperty<int>(0); // 1, 2, 3と値…

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

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

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

    はじめに UnityでDI ContainerといったらZenjectやExtenject,VContainerあたりが有名ですよね。Dependency Injectionパターンを利用する場合は誰がインスタンスを生成・注入するかが難しい問題になりますが、その解決法の一つとしてDI Containerが利用されます。ただDependency Injection = DI containerと思われている方もいるようですが、それは正しくありません。今回はDIコンテナ以外の解決法の一つである、Poor man's dependency injectionについて紹介したいと思います。 はじめに …

  • ひろゆき「なんですか? 『写像』って…」→「それって写像じゃないですよね?」

    はじめに 今日はいつもと違って数学の話をしたいと思います。大学院で離散数学の授業を受けているのですが、ちょうど写像の話題になりました。写像といえばひろゆきさんがこちらのシーンが有名ですよね。 勝間「違うんですよ! リアルの話に対してのインターネットが『写像』であることに−−」ひろゆき「『写像』?」勝間「………。(突然無言になり笑う)」ひろゆき「なんですか? 『写像』って…」勝間「……だめだコレ(笑)」 ひろゆき「なんですか? 『写像』って…」 勝間「……だめだコレ(笑)」 : 名トークログただここで出てくる写像って実は使い方が間違ってるという噂を聞きました。そこについて今日は触れていきたいと思…

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

    はじめに 今回はShaderGraphのCustomFunctionNodeを使ってみようという記事になります。docs.unity3d.comCustomFunctionNodeは一言で言えば、自分で動作を記述することができるノードということでしょうか。細かい説明はそれぞれの箇所でしますが、今回目的となるガウシアンフィルタを適用したみた画像は以下になります。 左:入力画像,右:出力画像画像の引用 : https://github.com/yoyoyo-yo/Gasyori100knockそもそもガウシアンフィルタってなんやねんみたいになる方もいるかもしれませんが、以前Compute Shad…

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

    はじめに 先日このようなものを作ってみました。キャラクターにDissolveシェーダーを適応してみました作るのが簡単な割に良い感じに見えるからコスパが良し pic.twitter.com/2NKiMN8l3f— はなちる@ゲーム制作 (@hanaaaaaachiru) June 2, 2021 Dissolveシェーダーで絶対座標を基準にして消えるようにしたバージョンを作ってみましたマテリアルが分かれてたりしても同期してくれるので割とかっこいいような#Unity pic.twitter.com/SqO3EXZVuW— はなちる@ゲーム制作 (@hanaaaaaachiru) June 12, …

  • 【Excel】エクセルでうまぴょい伝説(動画)を再生させたみた

    はじめに 先日このようなものを作ってみました。エクセルで「うまぴょい伝説」を再生(描画)してみました作って分かったことはVBAがかなり使いづらいこととセルの書式の変更の処理が重いことと、ライスシャワーは解像度が低くても可愛いこと pic.twitter.com/hC3nBQMU1g— はなちる@ゲーム制作 (@hanaaaaaachiru) May 29, 2021 中身としてはエクセルで動画を再生してみるというものになりますが、これをどうやって実装したかを描いていきたいと思います。 はじめに 実装の流れ mp4を読み込み低解像度化,CSV書き込み VBAで再生 さいごに 実装の流れ エクセル…

  • 【UniRx】ファクトリメソッドObservable.Create<T>を解剖してみよう

    はじめに 今回はUniRXのObservable.Create<T>についてソースコードを交えながら見ていきたいと思います。github.com はじめに 使い方 Observable.Createの中身 CreateObservable<T>の中身 OperatorObservableBase さいごに 使い方 var observable = Observable.Create<int>(observer => { for(var i = 0; i < 10; i++) observer.OnNext(i); observer.OnCompleted(); return Disposabl…

  • 【Unity】すごい早いという噂のDIコンテナ「VContainer」を始めて触ってみる

    はじめに 今回は巷で噂のVContainerについての記事を書きたいと思います。github.comUnityのDIコンテナといえばZenjectであったり、Extenjectが有名でしたがそれらと比較して性能が全体的に良いようです。GitHubを見ればこれでもかというほどZenjectとのパフォーマンス比較の説明がなされているので、興味がある方はそちらをチェックしてみてください。今回は導入〜基本的な使い方までを紹介していきます。 はじめに 導入 その前に 何を学ぶかを知る コンストラクタインジェクションを行う LifetimeScopeを作成 コンストラクタインジェクションしたいコンストラク…

  • 【Unity】同じコンポーネントをアタッチさせないようにするDisallowMultipleComponent属性について

    はじめに 今回は同じコンポーネントをアタッチさせないようにする[DisallowMultipleComponent]について書いていきたいと思います。 はじめに DisallowMultipleComponentとは 使い方 DisallowMultipleComponentとは まずは公式ドキュメントを見てみましょう。 UnityEngine.DisallowMultipleComponent GameObject に2つ以上同じコンポーネントをアタッチできないようにします。 UnityEngine.DisallowMultipleComponent - Unity スクリプトリファレンス未…

  • 【Unity】TextMeshProの容量を指定した文字だけ入れて減らす手順

    はじめに 昔これに似た記事を書いたのですが、今回はさらに簡単にできる手順があったので再度記事にしたいと思います。 (前記事では比較実験もしていますが、今回は手順をつらつらと書いていきます)www.hanachiru-blog.comまず前提としてTextMeshProはFont Asset Creatorを使ってフォントを独自アセットに変換して利用します。 TMPでのフォントの変換この独自アセットを日本語に対応しようとすると数十MBぐらいになってしまうことがあります。アプリとしてリリースするときは容量が小さいほどダウンロードされやすいと言われたりしますし、これほど容量が大きすぎるとGitにあげ…

カテゴリー一覧
商用