渋谷ほととぎす通信

新しいこと、枯れたこと問わずサムザップ大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。※あくまで個人ブログであり所属組織とは関係ありません

Unity

【Unity】Visual Effect Graphを生成直後に再生させない方法

ParticleSystemでいう所のPlay On Awake(Awake時にパーティクルを再生させるフラグ)をVisual Effect Graphでどうやって実装するか?という話です。 OnStopをInitial Event Nameにセット 上記のようにOnStopイベントをInitial Event NameにセットするとVisual…

【初心者向け】Visual Effect Graph面白いなと思った事3点紹介というLTをしてきました

先日エンジニアLTで最近勉強中のVisual Effect GraphについてLT発表してきました。その資料を共有したいと思います。 最後までご覧頂きありがとうございます。 もしスライド中の動画やリンクが気になった方は以下がオリジナルスライドになりますので、そちら…

【Unity】Universal Render PipelineでVisual Effect Graphの始め方(ポストエフェクト付き)

High Definition Render Pipeline(以下 : HDRP)使用時にはVisual Effect Graph(以下 : VFXGraph)はデフォルトでくっついてきますので、特に追加の準備をすることはありません。一方、Universal Render Pipeline(以下 : URP)使用時にはデフォルトでインストー…

【Visual Effect Graph】StartとStopに同名のイベントを設定してはいけない件

久々のブログです。 最近Unityの次世代パーティクルシステムVisual Effect Graph(以下:VFXGraph)で遊んでいます。 VFXGraphとはGPUパーティクルシステムです。ノードベースで処理をつなげることが出来るため、エンジニアからアーティストまで幅広く使われそ…

Verdaccioでローカルのnpmサーバーを立ててUnityPackageManagerにプライベートリポジトリを使う

前回からの続きで、プライベートリポジトリをUnity PackageManagerで使うためにnpmサーバーをローカルに立ててみます。 有名なVerdaccioを使います。Verdaccioは無料でnpmサーバーを作ることが出来ます。 ※nodejs、npmのインストールについては割愛します。 …

UnityのPackageManagerプライベートリポジトリの調査

結論 プライベートリポジトリは専用のレジストリサーバーを立てる必要がある。 ※レジストリサーバーを立ててプライベートリポジトリをUnityPackageManagerで使用する記事を書きました。 経緯 UnityのPackageManagerを使うにあたって、プライベートリポジトリ…

OpenUPMからDOTweenをインストールする

OpenUPMはおそらく個人で開発のパブリックレジストリを提供しているプロジェクトです(多分)。 今回はこのOpenUPMからDOTweenをインストールして、UnityのPackageManagerで管理することにします。今までだとAssetStoreやgithubからダウンロードしてProject内…

ShaderGraph テクスチャの参照をシェーダに渡す部分でハマる。_MainTexはどこ?

Unityにて、 UniversalRP ShaderGraph この2つを使った描画の検証をしています。 ShaderGraphで書いたシェーダに外からテクスチャをスクリプトで渡す際に軽くつまづいたので共有します。 作っているもの カラーテクスチャとマスクテクスチャを渡したマスクシ…

macOS CatalinaとUnityの相性悪いんじゃないか説

macOS Catalinaに先日アップデートしました。 それ自体に問題はありません。 しかしUnityで開発中時々登場するダイアログ↑。 Developer Tools Accessは、デバッグを続行するために別のプロセスを制御する必要があります。これを許可するには、パスワードを入…

AndroidがUnityProfilerにつながらない時にチェックした5つの事

環境 Windows10 Unity2019.3.15f1 Pixel3XL UnityProfilerに実機のAndroidをつないでテストしたいときにつながらない!!っていう時が発生したので、その対応をログっておきます。 ※有線(USBケーブルにつないで)テストです 1.Developmentビルド Development …

uGUIのCanvasGroupがしている事とは何か?

全子要素のアルファを一括で操作できるため、uGUIのCanvasGroupコンポーネントはUnityでUIを作る上で重宝しています。 ところCanvasGroupはどのようにしてアルファを適用しているのかを確認しました。 というのもuGUI用のシェーダを開発する上でCanvasGroup…

シェーダバリアントが多く作られるシェーダの最大使用メモリを計測する

Unityでキーワードを追加して処理を分岐させながらシェーダを書いていくと、知らず知らずのうちにシェーダバリアントが大量に増えることがあります。シェーダバリアントを作成するためには#prgama multi_compileまたは#pragma shader_featureを追加だけなの…

UnityからiOSビルドしてXcodeで実行したらトラブったのでそのメモ

環境 macOS HighSierra 10.13.6 Unity2019.3.0f6 Xcode10.1 iPhone6s iOS10.3.1 はじめに 久々にXcodeの実機デバッグをやりたくなりました。 そこでUnityからiOSビルドしてXcodeで実行すると期待通り?1発では上手くいかなかったので、今回の対応ログを残し…

知っておいた方が良いUnityのProject検索窓の小技

最近ブログを書いていなかったので、リハビリがてら小ネタを投下します。 僕はそこそこの頻度でUnityのProjectの検索窓を使用します。 HogeButtonというファイルを検索する場合 みたいな感じで入力します。 HogeShibuya24Buttonというファイルを検索する場合…

TexturePackerで画像を追加する際のちょっとした効率化Tips

Unityでゲーム開発中アトラスを作成する際によくTexturePackerを使用します。 アトラスとは複数の画像を一枚の画像と座標情報をセットにして書き出したもので、CPU負荷削減のために使用されます。 本記事ではTexturePackerで画像追加時の効率化アップTipsを1…

Unityからmicro:bitへ無線通信する方法

以前micro:bitを入力デバイスとしてUnityに無線通信で送信するサンプルを作りました。 今回はUnityを入力デバイスとしてmicro:bitへデータを送信してみます。 準備するもの Unityインストール済みパソコン micro:bit 2個 処理の流れ C#側からUSBにつながった…

RiderがUnityの.NET4環境を認識しない場合の対処法

UnityのPlayer Settingsの.NET4.xに設定を変更すると、Rider側が認識せずコンパイルエラー状態になりコード補完が効かなくなりました。 ※ただし、Unity側は正常にコンパイルは通ります。 Unityの設定画面で解決 UnityのPreferences > Riderから、Override Ta…

開発初期に暇を持て余しているUnityエンジニアができる42のTips後編

本記事は、サムザップ Advent Calendar 2019 #1 の12/24の記事です。 株式会社サムザップでUnityエンジニアをしている大庭です。 グラフィックデザイナー、Flashデベロッパーを経て、現在はUnityエンジニアでスマホゲームを作っています。Unity歴は6年くらい…

Prefabモードのまま再生すると編集中のPrefabも実行されてしまう気がした件の検証

Prefabモードのまま、シーンを実行するとPrefabモードのスクリプトが動いているような気がしたので確認しました。 手順 条件付きで動く時がありました。 Prefabモードにする [ExecuteInEditMode]をくっつける シーンを再生する すると、Prefabモードのスクリ…

DOTween実行時警告 : An error inside a tween callback was silently taken care of ~~► Index was outside the bounds of the array.の対処法

DOTWEEN ► An error inside a tween callback was silently taken care of (Void \<HogehogeMethod>b__21_0(Int32)) ► Index was outside the bounds of the array. DOTweenでこういう警告が出て困っていたのですが、DOTweenが悪いわけでありませんでした。(大抵悪いのはコー</hogehogemethod>…

開発初期に暇を持て余しているUnityエンジニアができる42のTips前編

本記事は、サムザップ Advent Calendar 2019 #2の12/11の記事です。 ※後編リリースしました。 株式会社サムザップでUnityエンジニアをしている大庭です。 グラフィックデザイナー、Flashデベロッパーを経て、現在はUnityエンジニアでスマホゲームを作ってい…

Unity PolygonCollider2DのEditColliderができなくなる条件

UnityのPolygonCollider2Dはインスペクタからドラッグで感覚的にコライダーのメッシュを作ることができます。 ピンクの枠部分をクリックすると、シーンビューにコライダーのハンドルが表示されます。 このようにSpriteRendererで表示している2Dオブジェクト…

DOTweenをasync/await化して可読性の高いコードにしてみる件(キャンセルにも対応)

この辺りの記事からの続きですが、個人的な開発環境をコルーチンからasync/awaitに移行中です。 移行するにあたって、僕が最もよく使うDOTweenのasync/await化は必須で、特にキャンセル周りは演出を作る上では最重要と考えています。 本記事では安全に使いや…

Task.Delayの待機時間をUnityEditor上で計測をしたら少しずれる件

Task.Delayの待機時間が本当に数値通りかを以下のサンプルコードで確認しました。 async void Start() { var t = Time.time; var st = Time.realtimeSinceStartup; await Task.Delay(5000); // ゲーム時間 Debug.Log($"Time.time :{Time.time - t}"); // リ…

C#コンストラクタパフォーマンス比較検証

余程のパフォーマンスチューニングが必要なときしか不要なパフォーマンス検証結果を残しておきます。 インスタンスをnewキーワードで生成する時、コンストラクタに引数を入れるパターンと入れ無いパターンがあります。 // コンストラクタに引数を持たないパ…

async/awaitを使う上でタスクのキャンセルは例外処理であるという考え方に移行する必要がある件

最近async/awaitデビューしたので、完全理解しようと思う。主にキャンセル周り。あと噂のUnitaskとその負荷とコルーチンWorkflowとの比較— 大庭俊介@Unityエンジニア (@ohbashunsuke) 2019年10月18日 この辺りの経緯から基礎的なところからUnityを使う上での…

初心者向けUnity Shader Graphの始め方

ノードを繋げてシェーダを作成することができる、Unity純正のShader Graphを始めてみました。 環境セットアップ(Unity2019.1.10f1の場合) 新規プロジェクトで始める場合、Unity HubからLightWeight RPを選んだ状態でプロジェクトを作成するとスムーズにShade…

CEDEC2019気になったUnity情報、直接中の人に質問しにいったこと編

タイムシフト、スライド、動画が公開されるのがほぼ当たり前になりつつある、CEDECやUniteにおいて、現地に行って参加するメリットの1つは、発表者や中の人と直接話しができることです。Unityのロードマップの中で気になっている以下の2点についてUnityの中…

CEDEC2019 Unityミニセッション気になった事まとめ

CEDEC2019では休憩時間中にUnityブースでミニセッションが行われていました。計6回行われた内容の中で特に気になったものをまとめておきます。 9月4日~6日の #cedec2019 。4FエレベーターホールのUnityブースでは1日2回ミニセッションを行います! https://…

CEDEC2019気になったUnity情報主に2019.3以降の新機能編

CEDEC2019に参加してきて自分なりのレポートを残している最中です。 本記事は「Unity2019年注目機能まとめ」を元にUnity2019の新機能について気になったことをまとめています。ただし、基本的にUnity2019.3以降の機能です。 Universal Render Pipeline(以下:…