問題タブ [unity3d-5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
492 参照

unity3d - 動的に追加されたボタンクリックのリスナーの呼び出し元を見つける

クリック リスナーを追加したいボタンのリストをコードに追加しています。

リスナーを追加できました。問題は、リスナーを呼び出したボタンを知りたいということです。

次の方法を試しましたが、リスナーに渡される値は常に同じです。

TL;DR

ボタンクリックリスナーから発信者を見つけるにはどうすればよいですか?

0 投票する
1 に答える
506 参照

unity3d - Unity3D は画面解像度に応じて Assets フォルダーを選択します

Unity3D ゲームを作成しました。バックグラウンド テクスチャは、iPad Retina 解像度に合わせて 2048x2048 です。しかし、解像度がはるかに低い古い携帯電話には多すぎます。すべてのテクスチャのサイズを変更し、2 回ダウングレードしたテクスチャを含む 2 つ目のフォルダーを作成しました。

解像度に応じてテクスチャ フォルダを選択する正しい方法は何ですか。

Unity3D の性質はその GUI ツールであり、通常、プロパティ インスペクターでテクスチャを設定する場合、コードですべてを手動で設定するのは Unity の方法ではありません。

また、コードでテクスチャを変更するかどうかもわかりません。その場合、古いテクスチャと新しいテクスチャの両方が読み込まれません。

もう 1 つのアイデアは、異なる解像度に異なるシーンを使用することです。しかし、何かを変更したい場合は作業が 2 倍になり、アプリをテストする作業も 2 倍になります。

複数の解像度を処理するには、何らかの解決策が必要です。しかし、起動時にテクスチャのあるフォルダーを選択するだけの単純なものは見つかりません。

0 投票する
1 に答える
3594 参照

unity3d - Unity の遅延ポイント ライトが遠くに消える

更新を含む概要:

  • ディファード ライティングを使用した Unity 5 シーン。800 単位の空間に広がる約 200 のライトが含まれています。

  • ほとんどのライトはポイント ライトで、一部はスポット ライトです。スポットは正常に機能します。

  • ポイント ライトは、カメラから約 150 ~ 200 ユニット離れたところで瞬時に暗くなります。

  • 多数のポイント ライトをこの範囲内に移動すると、問題なく動作します。

  • 自動と重要の間でレンダリングの優先度を切り替えても違いはありません。

  • このシーンをロードできるエディタで別のシーンを再生すると、正しく表示されます。直接再生したり、ビルドを実行したりすると、正しく表示されません。


基本的なシーンをまとめました。これは、廊下の 5 つのクローン セクションで構成され、それぞれに 12 個のライトがあるため、合計 60 個です。

ただし、最初の 2 つのセクションのみが適切に表示され、他のセクションはほぼ完全に暗くなっています。

遅延光の問題 (親切にしてください、私は今日これを始めたばかりです:P)

そしてエディタから、距離をよりよく示すために端のセクションを強調表示します:

ディファード ライトの問題 - エディタ

かすかにわかるように、ライトは実際にはそこにあり、非常に薄暗いだけです。

据え置きライトの問題 - ズーム

廊下を歩いていると、近づくにつれて完全に明るくなります。

これは、ディファード ライティングが設定されたビルド上にあり、念のためピクセル ライト カウントが正しく設定されています。

これは何らかの方法で LOD またはカメラの範囲に関連していると推測しましたが、現在、問題に影響を与えるものは何も得られないようです.

(このシーンは、実際にはライトが消えて非常用照明に切り替わることに基づいているので、それらを制御できるようにする必要があります!)


アップデート

見えるライトはスポットライトです。消えていくライトはすべてポイントライトです。

ポイントライトが消える

遠くの天井にスポット ライトが点灯しているのが見えるだけですが、メインのシーリング ライトは完全に暗くなります。


更新 2

いくつかのテストを実行するために、率直に言ってばかげた数のライトをシーンに追加し、廊下を拡張しました。

セクションごとに 24 個のライトがあり、合計 8 個のセクションがあるため、全部で 192 個のライトになります。

ライト - ライトが多すぎます

さらにライトが切れるかどうかを確認したかったのですが、そうではありません。それは完全に範囲に基づいているようです-私のシーンでは約150〜200ユニットです。

これを確認するために、私はトンネルの中心まで歩いて、背後にあるものも含めて、目に見えるライトの数が実質的に 2 倍になるかどうかを確認しました。

また、すべてのセクションをカメラの近くに移動して、すべてのライトが問題なく一度に表示されることを確認しました。これも同様です。


更新 3

シーンが正しく表示される状況を発見しました!

奇妙な状況で働くライト

メイン メニュー シーンのエディタで再生を押してから、このシーンをロードする UI ボタン​​を押すと、正しく表示されます!

シーンを直接再生するとき、または最終ビルドを実行するときに、正しく表示されません。

0 投票する
2 に答える
1513 参照

unity3d - Unity3D UI キャンバスでの透過メッシュのレンダリング順序

ScreenSpace-Camera UI キャンバスにアタッチされた 2D 円の手続き型メッシュがあり、その上にいくつかの UI テキストをレンダリングしたいと考えています。ただし、z オーダーを並べ替えているにもかかわらず、UI テキストは常に円の下にレンダリングされます。マテリアルを不透明なマテリアルに変更すると、すべて正常に機能します。では、UI 要素として扱われるメッシュ オブジェクトの透明なレンダリング順序をどのように処理すればよいでしょうか。