マスクを使用して2D UIヘルスバーを作成しようとしています。私は黒の背景画像、ヘルスバーの完全な部分の緑色のヘルスバー画像、ヘルスバーの空き部分の灰色のマスク画像を持っています。黒い背景はサイズが約1×0.1で、緑色とグレーの部分は若干小さく、黒い背景の小さな部分がヘルスバーのエッジの周りに見えるようになります。奇妙な動作UIマスクから
私のシーンにヘルスバーを追加すると、黒い背景のみが表示されます。 Mask
スクリプトをオフにすると、緑色の部分が表示されます。最も奇妙なことは、緑の部分の幅を50のような大きな数に増やすと、バー全体が緑色に変わります(細い黒い枠を除く)。その後、私がFill Amount
を変更すると、バーは0.51から1まで完全にとどまり、0から0.49まで空になります。 Fill Amount
を0.49と0.51の間で動かすと、バーの緑色の部分が収縮して膨張します。
Hereは、ヘルスバーの階層です。
Hereは、インスペクタのステータスバーキャンバスです。 Render Mode
はWorld Space
です。それがこの問題に関連するかどうかはわかりません。私はStatus Bar Canvas Script
と呼ばれる私自身のスクリプトを持っていますが、私はすべてのコードをコメントアウトしました。
Hereは、インスペクタのステータスバーの背景(黒い境界線)です。
Hereは、インスペクタのマスク(塗り潰されていない灰色のバー)です。
Hereは、インスペクタの緑色のバーです。
This結果は次のようになります。
ThisMask
スクリプトをオフにした場合の結果は次のようになります。
問題は、Unityがシーン内の「コンテンツ」オブジェクトをどのように拡大しているかに関係しているようですが、実際に何が行われているのかわかりません。
ヘルスバーのためだけにキャンバスを使用しないでください。 'OnGUI'を使用せずにUI要素を描画するためのキャンバスは必要ありません(これはお勧めです)。私はユニティにとって初めての人なので、多分私は誤解しています。 –
1つのキャンバスには、Buttons、Background、Textsなど、必要に応じてほとんどのUIオブジェクトを子として持つことができます。グループとして扱うための単一のタスク指向のオブジェクトを持つ空の 'Rect'オブジェクトをキャンバスに作成できます。したがって、いつでもボタンをアクティブにする必要があるときは、オブジェクトを保持するボタンをクリックします。たとえば、カメラやオーバーレイのような画面空間を配置する必要がある場合、マルチキャンバスが必要です。ほとんどのUIオブジェクトを1つのキャンバスにまとめることができます。健康バーのキャンバスは必要ありません。他の提案に使用されている同じキャンバスの子として、ヘルスバーを保持している画像または空のオブジェクトにすることができます –