サンプルソース
MonoBehaviour による衝突検出をおこなうにはCollider をつけたオブジェクトに直接スクリプトをアタッチする必要があるので、検出したあと他のスクリプトで処理を行いたい場合は一工夫おこなう必要がある。 イベントごとにそれぞれ別な処理を都度作るのはめ…
Texture2D で動的に生成したテクスチャを png 形式で保存、その後すぐアセットとしてスクリプトで扱いたい場合が結構あるのですが、クラスやメソッドによってパスの扱い方に差があったりして結構めんどうなのでスニペットを置いておきます。
カスタムエディターを作成しているときに、クリックやマウス移動やキー入力などをシーン中の操作(ショートカット)とは別に実装を行いたい場合があります。 例えば、シーンビューでオブジェクト選択中に R キーを押すと回転を調節するハンドラに切り替わり…
EditorWindow を作ると、タブに表示される名前がデフォルトだと namespace を含めたクラス名になる 変更したい場合は GetWindow の引数に title を指定する // ウインドウを作成 MyEditorWindow window = (MyEditorWindow)EditorWindow.GetWindow( t: typeof…
Extenject を使っていて、 すでに読み込み済みのシーン内のコンポーネントを、追加で読み込むシーンにDIしたい場合 Scene Parenting という機能があります。 GitHub - Mathijs-Bakker/Extenject: Dependency Injection Framework for Unity3D
またアホみたいなことを思いついてUnityでモザイクする方法を探していたら、 意外と簡単にできました。 Render Pipline の設定 Shader Graph アセットを作成する Shader Graph のプロパティの追加 ノードをつなぐ マテリアルを作成 シーンにモザイク表面とな…
エディタスクリプトとかで、文字列をパースしてEnumとして取りたい場合があったので。 以下のようなEnumが定義されている場合 enum TestEnum { Unity, Test, Fakku }
うっかりやってしまったのでおさらい... Transform[] TransformList; TransformList[Random.Range(0, TransformList.Length - 1)]; みたいに Length - 1 をつかってランダム値を取得しようとするとちゃんと取得できませんよって話。 基本的な仕様の理解 Unit…
下のようなかんじでインスペクタにボタンを表示させ、 押したときに MonoBehaviour の任意の関数を実行させる。
シーン内にオブジェクトを配置している際、人物モデルのAnimatorに設定してあるアニメーションのポーズをとらせたかったのに方法がわからなかったので、 スクリプトで強引に解決した。
デフォルトではGameObjectに同じスクリプトを2個以上つけてもなんの問題もなく動いてしまうので、 非常に見つけづらいバグのもとになってしまいます。
コライダーなどのコンポーネントがついていることを前提としたスクリプトを書いた時、 GameObjectやプレハブにスクリプトをつけるときに必要なコンポーネントを全部手作業でつけたりしていませんか? そんなとき、スクリプトと同時にUnityが自動でコンポーネ…
3Dグラフィックスを描画するときに、ディスプレイ上の描画位置を計算する処理が MVP行列 を使った座標変換です。 モデル行列、ビュー行列、プロジェクション行列を使った変換のことですが、Unity上で ShaderLab を使ってシェーダーを書く場合、 それぞれシェ…
知ってのとおりiOS14から、アプリ内でパーソナライズ広告を表示するためのトラッキングを許可するダイアログを実装する必要があります。 もちろんUnityのゲームでも対応する必要があるので、手っ取り早く最速で 実装する方法をまとめました。 Xcodeのフレー…
Universal Rendering Pipeline の場合、カメラごとのポストプロセスの ON, OFF はカメラをインスペクタで見たときのチェックボックスでします。 この切り替えをスクリプトからしたかったのですが、ひと工夫必要だったのでメモ。 Unity 2020.2 URP 10.3.2
前回 Shader Graph でディゾルブシェーダーを作りましたが、Shader Graph だと ComputBuffer に対応してなくて、 これだとやりたいことできへんやんということで結局コードを書くことにしました。 でせっかくなので紙が燃えるときのようなエッジのエフェクト…
とりあえず動くのを優先してジョブをガリガリ書いていると、以下のようなエラー表示によく出くわします。 A Native Collection has not been disposed, resulting in a memory leak. Enable Full StackTraces to get more details. NativeArray などでメモリ…
基本的に私は何も考えずにUnityをメジャーアップデートして使うしパッケージもどんどんpreview状態で使っていくタイプなのですが、そのたびに何かしら問題が発生し、開発期間中にハマるときは大体Unityアップデートした直後だったりして「ちょっとお前落ち着…
前回は、とりあえず新しい入力検出方法の Input System を導入してみました。 indie-du.com 今回は PS4のコントローラ を開発用のPCにつなぎ、スティックのアクションを受け取って移動してみます。 サムネ用
ユーザの入力を検出するには Input クラスを使ってするのがイニシエからの手順でしたが、新方式の InputSystem が4月に正式リリースとして Package Manager に登録されていました。 自分はテレビで前作を取り上げてもらってから色々あってずっとゲーム作って…
現在ECSでRTS(タワーディフェンス)を作っているのですが、攻撃の当たり判定と敵の当たり判定を総当たりで判定するのにちょっと手間取ったのでメモ。
ECSを使うならWorldは自作すべきと言い切れます。 なんでかというと、ずっとAndroidゲームの起動時間が最低でも5秒くらいかかっていて短縮するためにいろいろ試していたのですが、 結局ECSの デフォルトワールドを無効にしただけで1秒で起動するように な…
JobComponentSystem を使っているときに、OnUpdateが一回だけ呼ばれて以降のループが止まる という現象に悩まされたのですが、どうも仕様っぽい動作だったのでメモ。 not run になっている
ECSのリファレンスとして使えるの情報がブログとかしか見つからなくて困っていたのですが、公式ページでTransformの解説をしているページをやっと見つけました。 docs.unity3d.com とりあえず各章を流し読みしながら図を追うだけでも勉強になります。 ・今回…
100体でも1000体でもいいのですが、とりあえず物体を大量に動かしたかった。 未来の自分のために ソースコード完全コピペで動かせる のを目指しました。
Steamのレビュー待ちのあいだにスマホ用のカジュアルゲームを作っていて、背景に困って 適当なグラデーションでぬりつぶせないかな と探していたらいいものが紹介されていらっしゃった。 baba-s.hatenablog.com github.com でも今作っているゲームは LWRP (L…
SteamInput でゲームパッド対応した際の発展系として、コントローラのボタンの画像(グリフ)をAPIで取得できる。 このとき取得するボタンは アクション 単位での取得になるため、 「"ジャンプ" アクションのボタン画像を取得」というコードを書けば、コント…
とりえあず PlayableGraph.Evaluate 使ったら最初からすぐ再生されるようになった Unity - Scripting API: Playables.PlayableGraph.Evaluate var playableGraph = PlayableGraph.Create(); Animator ani = transform.GetComponent<Animator>(); var playableOutput = </animator>…
カメラをキャラのまわりにそってグイグイ動かしたかったのですが、Unityのアニメーション機能およびTimelineを使うとガクガクになってしまうので良い方法を探していました。 「ベジェ曲線で動かす方法ないかなあ」と思っていたら Cinemachine にそのものズバ…
いつも悩ましい Unity のテストですが、Play Mode でテスト内容を調整しつつ、そのままシーンを Unity Test Runner で実行 できないかなと試行錯誤した結果なんとか実現できたのでメモ。 PlayerTest ディレクトリを作成 テスト用シーンを作成 スクリプトを作…