Highly efficient gizmo drawer for Unity
UGizmoは、標準のGizmosクラスに様々な機能を追加し、ランタイムやイベント関数での呼び出しを可能にしたライブラリです。
また、GPU instancingを用いてドローコールを削減することにより、効率的にギズモを描画することができます。
- Update(), LateUpdate()等のUnityのイベント関数での呼び出しをサポート
- ランタイムで描画可能
- GPU instancingを用いたドローコールの最適化
- 30種類以上のギズモ
- Unity 2021.3以上
- URP or HDRP (Built-in Render Pipelineはサポートしていません)
- Window > Package ManagerからPackage Managerを開く
- 「+」ボタン > Add package from git URL
- 以下のURLを入力する
https://github.com/harumas/UGizmo.git?path=src/UGizmo/Assets/UGizmo
もしくはPackages/manifest.jsonを開き、dependenciesブロックに以下を追記してください。
{
"dependencies": {
"com.harumaro.ugizmo": "https://github.com/harumas/UGizmo.git?path=src/UGizmo/Assets/UGizmo"
}
}
UGizmos
クラスを用いることで描画することができます。
標準のGizmos
クラスでは、Gizmos.matrix
を用いてマトリックスを指定しますが、UGizmoではメソッドの引数に、位置、回転、スケールの情報を渡します。
また、色の指定もGizmos.color
ではなく、メソッドの引数に直接Color構造体を渡してください。
using UnityEngine;
public class DrawCubeSample : MonoBehaviour
{
private void OnDrawGizmos()
{
UGizmos.DrawCube(Vector3.zero, Quaternion.Euler(45f, 45f, 45f), Vector3.one, Color.red);
}
}
Package Manager > UGizmo > Samplesを開くと、URPとHDRP向けのサンプルをインストールすることができます。
名前 | 補足 |
---|---|
DrawSphere() |
球体を描画します。 (従来の倍の頂点数) |
DrawWireSphere() |
ワイヤーフレームの球体を描画します。(従来の倍の頂点数) |
DrawCube() |
キューブを描画します。 |
DrawWireCube() |
ワイヤーキューブを描画します。 |
DrawCapsule() |
カプセルを描画します。 |
DrawWireCapsule() |
ワイヤーフレームのカプセルを描画します。 |
DrawCylinder() |
シリンダーを描画します。 |
DrawWireCylinder() |
ワイヤーフレームのシリンダーを描画します。 |
DrawCone() |
コーンを描画します。 |
DrawWireCone() |
ワイヤーフレームのコーンを描画します。 |
DrawPlane() |
プレーンを描画します。 |
DrawWirePlane() |
ワイヤーフレームのプレーンを描画します。 |
名前 | 補足 |
---|---|
DrawCircle2D() |
円を描画します。 |
DrawWireCircle2D() |
ワイヤーフレームの円を描画します。 |
DrawBox2D() |
ボックスを描画します。 |
DrawWireBox2D() |
ワイヤーフレームのボックスを描画します。 |
DrawTriangle2D() |
三角形を描画します。 |
DrawWireTriangle2D() |
ワイヤーフレームの三角形を描画します。 |
DrawCapsule2D() |
カプセルを描画します。 |
DrawWireCapsule2D() |
ワイヤーフレームのカプセルを描画します。 |
名前 | 補足 |
---|---|
DrawPoint() |
ポイントを描画します。最前面に描画されます。 |
DrawLine() |
ラインを描画します。 |
DrawLineList() |
点のペアの間に複数のラインを描画します。 |
DrawLineStrip() |
指定されたスパン内の各点の間に線を描画します。 |
DrawRay() |
start (開始地点)から start + dir (開始地点+方向)までラインを描画します |
DrawFrustum() |
カメラの錐台を描画します。 |
DrawDistance() |
aからbの距離を表示します。ランタイムでは距離は表示されません。 |
DrawMeasure() |
一定間隔で区切られた線を描画します |
DrawArrow() |
3Dの矢印を描画します。 |
DrawArrow2d() |
2Dの矢印を描画します。 |
DrawFacingArrow2d() |
2Dの矢印を描画します。常にカメラに向きます。 |
DrawWireArrow() |
ワイヤーボディの2Dの矢印を描画します。 |
DrawFacingWireArrow() |
ワイヤーボディの2Dの矢印を描画します。常にカメラに向きます。 |
名前 | 補足 |
---|---|
Raycast() |
レイキャストを行い、結果を描画します。 |
DrawRaycast() |
RaycastHit構造体を渡して、レイキャストの結果を描画します。 |
Linecast() |
ラインキャストを行い、結果を描画します。 |
DrawLinecast() |
RaycastHit構造体を渡して、ラインキャストの結果を描画します。 |
SphereCast() |
スフィアキャストを行い、結果を描画します。 |
DrawSphereCast() |
RaycastHit構造体を渡して、スフィアキャストの結果を描画します。 |
BoxCast() |
ボックスキャストを行い、結果を描画します。 |
DrawBoxCast() |
RaycastHit構造体を渡して、ボックスキャストの結果を描画します。 |
CapsuleCast() |
カプセルキャストを行い、結果を描画します。 |
DrawCapsuleCast() |
RaycastHit構造体を渡して、カプセルキャストの結果を描画します。 |
名前 | 補足 |
---|---|
Raycast2D() |
2Dのレイキャストを行い、結果を描画します。 |
DrawRaycast2D() |
RaycastHit構造体を渡して、レイキャストの結果を描画します。 |
Linecast2D() |
2Dのラインキャストを行い、結果を描画します。 |
DrawLinecast2D() |
RaycastHit構造体を渡して、ラインキャストの結果を描画します。 |
SphereCast2D() |
2Dのスフィアキャストを行い、結果を描画します。 |
DrawSphereCast2D() |
RaycastHit構造体を渡して、スフィアキャストの結果を描画します。 |
BoxCast2D() |
2Dのボックスキャストを行い、結果を描画します。 |
DrawBoxCast2D() |
RaycastHit構造体を渡して、ボックスキャストの結果を描画します。 |
CapsuleCast2D() |
2Dのカプセルキャストを行い、結果を描画します。 |
DrawCapsuleCast2D() |
RaycastHit構造体を渡して、カプセルキャストの結果を描画します。 |
本ライブラリはMITライセンスで公開しています。
MIT License