LWRPの下にコードでシャドーの生成距離を動的に変更する方法
今回の話題
1)LWRPの下にどのようにコードでシャドーの生成距離を動的に変更するか
2)SRPはAndroidプラットフォームのBox Projectionをどのように有効にするか
3)リリースされたPCバージョンのウィンドウドラッグの問題
4)国際化されたフォントの問題
5)Unityの実行中に手動でnew Meshを解除する方法
SRP
Q:こちらのプロジェクトでは、Unity2018.3.14f1を使用し、 LWRP4.10.0も使用しています。コードでは、シャドーの生成距離を動的に設定したいなら、LightweightRenderPipelineAssetで。 ShadowsDistanceのフィールドも正常に割り振られますが、ゲームのシャドウはまだ設定された距離に従って有効になりません。値を手動で調整すると、すぐに有効になります。パラメータを有効にするために何か必須のアクティベーション操作はありますか?コードとスクリーンショットは次のとおりです。
A:それはCameraDataにあります。LWRPのRenderを書き直して、SingleCameraを個別に実装してから、その中で割り当て操作を行われば済みます。したがって、一般的なプロジェクトはこの値を直接的に使えなく、独自のSRPを実装すべきです。
SRP
Q:エディターをAndroidプラットフォームに切り替えると、新しく追加された反射プローブのBox Projectionが無効になっていることに気づいました。原因は何ですか。オンにする方法は?
A1:SRPは今だにBox Projectionをサポートしていませんから、エディターに選択されても、Shaderではサポートされておらず、公式は後のアップデートでサポートするようになるそうです。
A2:解決策を見つけました:
UnityのシェーダーのBox Projectionコードを直接コピーします。
自分のエディターに追加します:
自分のシェーダーに追加します:
オフにする前
オンにする後
効果が出ました。
UI
Q:PC版がリリースされたとき、ウィンドウをドラッグしても解像度は同じままですが、Scaleが変わることを願っています。PC版をリリースしたとき、ウィンドウをドラッグすると、シーン全体がウィンドウでいっぱいになりました。これはコードを書くことによって設定する必要がありますか、それともリリースオプションに設定がありますか?
A:直接的な設定がないと思います。すべてのカメラのレンダリングターゲットとして固定解像度のRenderTextureを使用することを検討できます。最後に、UGUIのRawImageとCanvasScalerでこのレイアウト要件を満たすことができます。
Font
Q:今やっているゲームは、国際的な多言語をサポートしていると考えています。ということは、クライアントのゲームでは、他の言語を同時に見ることができます。たとえば、チャットには暫定的にスペイン語、中国語、日本語、韓国語、東南アジア6の言語に定めます。
今はフォントプランを検討中ですが、独自のフォントを持参すると20MB近くになります。システムプリインストールのフォントを使用するのはどの程度実現可能か知りたいのですが、経験者からの意見を聞いてもよろしいでしょうか。
A1:こちらのプロジェクトは中国語(繁体字・簡体字)、日本語、英語、ベトナム語のバージョンを作りましたが、繁体字のようなフォントファイルには著作権がないため、一応いくつかの数字をフォントファイルに入れるだけで、他の文字は削除しました。フォントは好調に見え、1年間の運営でも異常な状況はありません。フォントライブラリが不備の場合にフォントを使用するなら、たとえば、台湾省の人々は日本語の文字を読むなら、文字が太ったり細ったりすることで、奇妙に表示される可能性があります。
A2:どんなフォントを使用するかにはいくつかの考慮事項があります。
1.フォントサイズ。一部は比較的大きいため、複数の言語をサポートできるフォント。
2.フォントの美しさ、一部のフォントはある言語では美しさを失うのです。
3.著作権、著作権のないオープンソースフォントを選択します。
要約すると、一般的に言えば、2つのスキームを使用できます。
1.上記の要件を満たす直接見つけることができるオープンソースフォントを優先的に選択します。
2.オープンソースフォントが見つからない場合は、フォント処理ソフトウェアを使用して、複数のオープンソースフォントの異なる言語部分を抽出し、それらを1つのフォントファイルにマージします。
フォントファイルが大きい場合は、必要に応じてフォントライブラリを調整できます。これは基本的にこちらのプロジェクトで採用されたスキームです。
Loading
Q:プロジェクトで使用されるLive2Dは、フレームワークを作成後に、大量のMeshが動的にnewされます。Resources.UnloadUnusedAssets()インターフェイスを使用する以外に、この部分だけのMeshを解除する方法はありますか?
A:new MeshはDestroyImmediateAPIを介して解除されることができます。
UWA公式サイト:https://jp.uwa4d.com
UWA公式ブログ:https://blog.jp.uwa4d.com
UWA公式Q&Aコミュニティ(中国語注意):https://answer.uwa4d.com