いんでぃーづ

ゲームいろいろ、いろいろ自由

サンプルソース

Unity : 衝突検出したら他のスクリプトに通知する汎用コンポーネント

MonoBehaviour による衝突検出をおこなうにはCollider をつけたオブジェクトに直接スクリプトをアタッチする必要があるので、検出したあと他のスクリプトで処理を行いたい場合は一工夫おこなう必要がある。 イベントごとにそれぞれ別な処理を都度作るのはめ…

Unity Editor : Texture2D を png 形式で保存してアセットとしてインポートする

Texture2D で動的に生成したテクスチャを png 形式で保存、その後すぐアセットとしてスクリプトで扱いたい場合が結構あるのですが、クラスやメソッドによってパスの扱い方に差があったりして結構めんどうなのでスニペットを置いておきます。

Unity : SceneView でキー操作を検出してキャンセルする

カスタムエディターを作成しているときに、クリックやマウス移動やキー入力などをシーン中の操作(ショートカット)とは別に実装を行いたい場合があります。 例えば、シーンビューでオブジェクト選択中に R キーを押すと回転を調節するハンドラに切り替わり…

Unity : EditorWindowのタイトルを変更する

EditorWindow を作ると、タブに表示される名前がデフォルトだと namespace を含めたクラス名になる 変更したい場合は GetWindow の引数に title を指定する // ウインドウを作成 MyEditorWindow window = (MyEditorWindow)EditorWindow.GetWindow( t: typeof…

Extenject (旧Zenject) : シーンに親子関係を持たせてDIする

Extenject を使っていて、 すでに読み込み済みのシーン内のコンポーネントを、追加で読み込むシーンにDIしたい場合 Scene Parenting という機能があります。 GitHub - Mathijs-Bakker/Extenject: Dependency Injection Framework for Unity3D

Unity : URP + ShaderGraph でモザイク

またアホみたいなことを思いついてUnityでモザイクする方法を探していたら、 意外と簡単にできました。 Render Pipline の設定 Shader Graph アセットを作成する Shader Graph のプロパティの追加 ノードをつなぐ マテリアルを作成 シーンにモザイク表面とな…

C# : 文字列からEnum値に変換する

エディタスクリプトとかで、文字列をパースしてEnumとして取りたい場合があったので。 以下のようなEnumが定義されている場合 enum TestEnum { Unity, Test, Fakku }

Unity : 配列の要素を Random.Range で取得するときに最後の要素だけなぜか出てこない

うっかりやってしまったのでおさらい... Transform[] TransformList; TransformList[Random.Range(0, TransformList.Length - 1)]; みたいに Length - 1 をつかってランダム値を取得しようとするとちゃんと取得できませんよって話。 基本的な仕様の理解 Unit…

Unity : インスペクタに表示させたボタンから任意の関数を実行する

下のようなかんじでインスペクタにボタンを表示させ、 押したときに MonoBehaviour の任意の関数を実行させる。

Unity : シーン編集中にAnimator付き3Dモデルにポーズをとらせる

シーン内にオブジェクトを配置している際、人物モデルのAnimatorに設定してあるアニメーションのポーズをとらせたかったのに方法がわからなかったので、 スクリプトで強引に解決した。

Unity : スクリプトを重複して付けてしまうのを防止する

デフォルトではGameObjectに同じスクリプトを2個以上つけてもなんの問題もなく動いてしまうので、 非常に見つけづらいバグのもとになってしまいます。

Unity : スクリプトに必要なコンポーネントを自動でつける

コライダーなどのコンポーネントがついていることを前提としたスクリプトを書いた時、 GameObjectやプレハブにスクリプトをつけるときに必要なコンポーネントを全部手作業でつけたりしていませんか? そんなとき、スクリプトと同時にUnityが自動でコンポーネ…

Unity : MVP行列をスクリプト側で計算してシェーダーに渡す

3Dグラフィックスを描画するときに、ディスプレイ上の描画位置を計算する処理が MVP行列 を使った座標変換です。 モデル行列、ビュー行列、プロジェクション行列を使った変換のことですが、Unity上で ShaderLab を使ってシェーダーを書く場合、 それぞれシェ…

Unity : iOS14のIDFAトラッキング許可ダイアログを実装する

知ってのとおりiOS14から、アプリ内でパーソナライズ広告を表示するためのトラッキングを許可するダイアログを実装する必要があります。 もちろんUnityのゲームでも対応する必要があるので、手っ取り早く最速で 実装する方法をまとめました。 Xcodeのフレー…

Unity URP : スクリプトからカメラのポストプロセスをON - OFFする

Universal Rendering Pipeline の場合、カメラごとのポストプロセスの ON, OFF はカメラをインスペクタで見たときのチェックボックスでします。 この切り替えをスクリプトからしたかったのですが、ひと工夫必要だったのでメモ。 Unity 2020.2 URP 10.3.2

Unity : エッジつきディゾルブシェーダーを自作する

前回 Shader Graph でディゾルブシェーダーを作りましたが、Shader Graph だと ComputBuffer に対応してなくて、 これだとやりたいことできへんやんということで結局コードを書くことにしました。 でせっかくなので紙が燃えるときのようなエッジのエフェクト…

Unity ECS : ジョブでNativeArrayのメモリリークが起きている場合の解決方法

とりあえず動くのを優先してジョブをガリガリ書いていると、以下のようなエラー表示によく出くわします。 A Native Collection has not been disposed, resulting in a memory leak. Enable Full StackTraces to get more details. NativeArray などでメモリ…

Unity ECS : preview版 (0.8.0) Hybrid Renderer V2 を使う

基本的に私は何も考えずにUnityをメジャーアップデートして使うしパッケージもどんどんpreview状態で使っていくタイプなのですが、そのたびに何かしら問題が発生し、開発期間中にハマるときは大体Unityアップデートした直後だったりして「ちょっとお前落ち着…

Unity : Input System でゲームパッドからの入力を受け取る

前回は、とりあえず新しい入力検出方法の Input System を導入してみました。 indie-du.com 今回は PS4のコントローラ を開発用のPCにつなぎ、スティックのアクションを受け取って移動してみます。 サムネ用

Unity : 新 Input System はじめの一歩

ユーザの入力を検出するには Input クラスを使ってするのがイニシエからの手順でしたが、新方式の InputSystem が4月に正式リリースとして Package Manager に登録されていました。 自分はテレビで前作を取り上げてもらってから色々あってずっとゲーム作って…

Unity ECS : Jobで攻撃の総当たり判定を行うときのテンプレっぽいもの

現在ECSでRTS(タワーディフェンス)を作っているのですが、攻撃の当たり判定と敵の当たり判定を総当たりで判定するのにちょっと手間取ったのでメモ。

Unity ECS : メッシュ表示と物理挙動が有効なWorldを自作する

ECSを使うならWorldは自作すべきと言い切れます。 なんでかというと、ずっとAndroidゲームの起動時間が最低でも5秒くらいかかっていて短縮するためにいろいろ試していたのですが、 結局ECSの デフォルトワールドを無効にしただけで1秒で起動するように な…

Unity ECS : JobComponentSystem が not run になる場合はEntityの状態を確認しよう

JobComponentSystem を使っているときに、OnUpdateが一回だけ呼ばれて以降のループが止まる という現象に悩まされたのですが、どうも仕様っぽい動作だったのでメモ。 not run になっている

Unity : ECSのTransform関係の仕様を理解するためのリファレンス

ECSのリファレンスとして使えるの情報がブログとかしか見つからなくて困っていたのですが、公式ページでTransformの解説をしているページをやっと見つけました。 docs.unity3d.com とりあえず各章を流し読みしながら図を追うだけでも勉強になります。 ・今回…

Unity : PureECSで100体のゾンビをランダムウォークさせるサンプルソース

100体でも1000体でもいいのですが、とりあえず物体を大量に動かしたかった。 未来の自分のために ソースコード完全コピペで動かせる のを目指しました。

Unityの背景グラデーション描画用スクリプトをGitHubでForkしてLWRPに対応した

Steamのレビュー待ちのあいだにスマホ用のカジュアルゲームを作っていて、背景に困って 適当なグラデーションでぬりつぶせないかな と探していたらいいものが紹介されていらっしゃった。 baba-s.hatenablog.com github.com でも今作っているゲームは LWRP (L…

SteamAPIで接続しているコントローラ用のボタン画像をスプライトで表示する

SteamInput でゲームパッド対応した際の発展系として、コントローラのボタンの画像(グリフ)をAPIで取得できる。 このとき取得するボタンは アクション 単位での取得になるため、 「"ジャンプ" アクションのボタン画像を取得」というコードを書けば、コント…

Unity : AnimationClipPlayable がクリップの最初から再生されなかったり停止したりしたときの解決

とりえあず PlayableGraph.Evaluate 使ったら最初からすぐ再生されるようになった Unity - Scripting API: Playables.PlayableGraph.Evaluate var playableGraph = PlayableGraph.Create(); Animator ani = transform.GetComponent<Animator>(); var playableOutput = </animator>…

Unity : カメラをベジェ曲線にそって動かす

カメラをキャラのまわりにそってグイグイ動かしたかったのですが、Unityのアニメーション機能およびTimelineを使うとガクガクになってしまうので良い方法を探していました。 「ベジェ曲線で動かす方法ないかなあ」と思っていたら Cinemachine にそのものズバ…

テスト用に用意したシーンを UnityTestRunner で実行する

いつも悩ましい Unity のテストですが、Play Mode でテスト内容を調整しつつ、そのままシーンを Unity Test Runner で実行 できないかなと試行錯誤した結果なんとか実現できたのでメモ。 PlayerTest ディレクトリを作成 テスト用シーンを作成 スクリプトを作…


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。