20210412のUnityに関する記事は6件です。

UnityのInspectorで配列長を追加するとなんか適当に詰め込まれるのをどうにかする

そこそこ腹が立ったので書きました。 Unityのバージョンは2019.4.13です。 Inspectorにて // なんの変哲もないGameObjectの配列 [SerializeField] private GameObject[] _gameObjects = default; こんな感じで宣言した配列に対してInspectorから長さを追加すると、最後のフィールドをそのまま複製して詰め込む暴挙に出ます。 対処 しょうがないのでInspectorの変更によってキックされるOnValidateで面倒を見てやります。1 OnValidate private void OnValidate() { // Inspectorに入力された長さを覚えておく var beforeLength = _gameObjects.Length; // nullと重複を除く _gameObjects = _gameObjects .Where(o => o != null) .Distinct() .ToArray(); // (入力された長さ) - (現在の長さ) // で足りない長さを調べる var length = beforeLength - _gameObjects.Length; if (length > 0) { // 不足がある場合は,足りない長さの空の配列を作ってConcatで追加 _gameObjects = _gameObjects .Concat(Enumerable.Repeat<GameObject>(null, length)) .ToArray(); } } まとめ いいからdefault2ブチこめ おしまい。 毎回ToArray()で確定しているのはIEnumerableな変数をわざわざ用意するのがめんどいのと、以前遅延評価絡みでなんかよくわかんない目にあったからです ↩ nullだとPrimitiveに対応できないので。しかし、この挙動って破壊と混乱を招くだけの気がするのですが、嬉しい人いるんでしょうか……? ↩
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unity & GitHub Actionsを学んだときの成果物・役に立った記事【まとめ】

はじめに ここ1週間ほどでUnityとGitHub ActionsでのCIについて一通り学んだので、成果物や役に立った記事をまとめました。 成果物 記事 やったことに関する手順を解説した記事。 UnityとGitHubActionsを使って自動テストを行う UnityとGitHubActionsを使って自動テストを行い、結果をSlackに報告する UnityとGitHubActionsを使って自動ビルドする【複数プラットフォーム同時ビルド】 UnityとGitHubActionsを使って自動でunitypackageをエクスポートする GitHubActionsでUnityライセンスのアクティベーションを行うためのULFファイルを入手するツールを作った【GUI操作のみ】 サンプルリポジトリ集 上手く動かなかったとき、比較対象となるリポジトリが無くて困ったことがありました。 なので、サンプルリポジトリを作りました。 Unity-GitHubActions-AutomaticTest-Example Unity-GitHubActions-Build-Example Unity-GitHubActions-ExportPackage-Example Unity-GitHubActions-Tutorials 役に立った記事(新しい順) 学ぶ際に役に立った記事です。 古い記事だとうまく動かなかった場合があるので、基本的には新しい記事を参考にした方がいいです。 テスト UnityとGithubActionsを使って自動テストをセットアップする手順の備忘録 GitHub Actions を使った Unity の自動テスト 【Unity】GithubActionsでUnityを起動してTestRunner実行後の結果を出力するまでの手順 【Unity】GitHub Actions v2でUnity Test Runnerを走らせて、結果をSlackに報告する【入門】 ビルド Github Actions で UnityPackage をビルドしたら快適だった話 ライセンス認証 Unityでエディタ拡張を作っている人向けの「GitHub Actionsを使ったCI構築」 UnityをGitHub Actionsで動かす際にライセンス認証周りで注意するべき点 公式ドキュメント 基本的にはGame CIのUnity Actionsを使用することになります。 細かい制御をしたいときや、どうしても分からないときは公式を参考にしました。 Game CI - Activation Game CI - Test runner Game CI - Builder Issues さいごに Unity & GitHub Actionsを学ぶ際の参考になれば幸いです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

UnityとGitHubActionsを使って自動テストを行い、結果をSlackに報告する

はじめに この記事はGitHub Actions上で自動テストを行った後、結果をSlackに報告する方法について解説する記事です。 自動テストの方法自体は以下の記事で解説しています。 経緯 以下の記事を見ながらテストの結果をSlackに報告してみようと思ったのですが、情報が古くて苦戦したので備忘録的に残しておきます。 手順 前提として、自動テストの手順を完了している必要があります。 1. WebhookのURLを生成・取得する GitHubActionsからSlackにメッセージを送信するために、SlackのIncoming WebhookのURLが必要になります。 以下のページに従い、Webhook URLを作成します。 手順通りに進めていくと、Webhook URLにhttps://hooks.slack.com/services/から始まるURLが生成されているので、この後にそのURLを使用します。 2. SecretsにIncoming WebhookのURLを登録する 取得したWebhook URLをプロジェクトリポジトリのSettings > Secretsに登録します。 新しいSecretを追加し、NameにSLACK_HOOKと入力し、ValueにWebhookのURLを入力します。 3. テスト用のYAMLにSlack報告処理を記述する 自動テスト処理を記述したYAMLに、Slack報告処理を追加します。 test.yaml name: Test on: [push, pull_request] jobs: test: name: ${{ matrix.testMode }} on ${{ matrix.unityVersion }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: projectPath: - . unityVersion: - 2020.3.1f1 testMode: - playmode - editmode steps: # Checkout - name: Checkout uses: actions/checkout@v2 with: lfs: true # Cache - name: Cache uses: actions/cache@v2 with: path: ${{ matrix.projectPath }}/Library key: Library-${{ matrix.projectPath }} restore-keys: | Library- # Tests - name: Tests uses: game-ci/unity-test-runner@v2 id: tests env: UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} with: projectPath: ${{ matrix.projectPath }} unityVersion: ${{ matrix.unityVersion }} testMode: ${{ matrix.testMode }} artifactsPath: ${{ matrix.testMode }}-artifacts checkName: ${{ matrix.testMode }} Test Results # Upload Artifact - name: Upload Artifact uses: actions/upload-artifact@v2 if: always() with: name: Test results for ${{ matrix.testMode }} path: ${{ steps.tests.outputs.artifactsPath }} reportSlack: name: ${{ matrix.testMode }} report runs-on: ubuntu-latest strategy: matrix: testMode: - playmode - editmode needs: test steps: # Download Artifact - name: Download Artifact uses: actions/download-artifact@main with: name: Test results for ${{ matrix.testMode }} path: ${{ matrix.testMode }}-artifacts # Clone NUnitXmlReporter - name: Clone NUnitXmlReporter run: git clone https://github.com/pCYSl5EDgo/NUnitXmlReporter.git # Setup .NET - name: Setup .NET uses: actions/setup-dotnet@v1.7.2 with: dotnet-version: '3.0.100' # Report Result to Slack - name: Report Result to Slack env: SLACK: ${{ secrets.SLACK_HOOK }} run: | cd NUnitXmlReporter dotnet run ../${{ matrix.testMode }}-artifacts/${{ matrix.testMode }}-results.xml ../slackJson --slack-block $GITHUB_REPOSITORY $GITHUB_SHA || INPUT_RESULT=$? cd .. curl -X POST -H 'ContentX-type:application/json' --data "$(cat slackJson)" $SLACK exit $INPUT_RESULT 元記事からの変更 actions/setup-dotnetのバージョンをv1.0.2からv1.7.2にした。(v1.0.2だとエラーを吐いて動かなかった) パスの記述をこちら側のものに合わせた。 4. テストしてみる リポジトリにPushまたはPull Requestを行い、テストのワークフローを走らせます。 ワークフローが完了するまで待つ。 以下の画像のように、テストの結果がSlackに報告されていれば成功です。 さいごに 最終的に仕上がったリポジトリです。詰まったときは参考にしてみてください。 CIは初めてであまり詳しくないので、間違えているところがあれば教えてもらえると幸いです。 (ワークフローが動くようには書きましたが、いかんせんYAML構文がよく分からず、一部ベタ書きがあるのでYAMLが分かる人がいれば教えてもらえると助かります!) 参考 【Unity】GitHub Actions v2でUnity Test Runnerを走らせて、結果をSlackに報告する【入門】
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【VRChat】Post Processingを使ってワールドをより良くする

概要 「Lighttingもある程度理解したし、なんかもっとワールドいい感じにしてー」みたいなのありますよね。私にはありました。 このPost-processingを使えば、より良い絵作りができると思います。完全に理解してオシャンティーなワールドを作りましょう。 解説について ・一応VRChatのワールド向けに書いていますが、それ以外でも使えると思います。 ・今回の記事ではBloomとColor Gradingについて解説します。 環境 ・Unity2018.4.20f1を使用 ・VRCSDK2-2020.11.16.12.43_Publicを使用 ・PostProcessingStack V2を使用 Post Processingってなに? Post-processing(ポストプロセス)とはカメラの画像にフィルターとかエフェクトを適用する処理のことです。取り合えず、(適切に)使ったらなんかよりいい感じの絵になるやつだと思っておいてください。ただし、掛け過ぎると目に悪くなるので注意してください。詳しくはこれ読んで。 ※以下からPost-processingのことを「PPS」と略します。 ↑ これが ↑ PPS掛けるとこうなる(分かりやすくするためにキツめに掛けています) 1. PPSv2の導入方法 Window → Package Managerを選択し、開きます。 導入可能なパッケージの一覧が表示されます。その中から「PostProcessingStack」を見つけてインストールを行います。 「PostProcessingStack」の横にチェックマークがついていれば、PPSの導入は完了です。 2. PPSを適用する前の準備 普通にめんどくさいので、ご機嫌がいい時にやりましょう。3ステップあり、遅くても20分も掛からないと思います。 2-1 レイヤーの設定を行う Edit → ProjectSettings → Tags and Layersを選択し開きます。 もしくは適当なオブジェクトのInspectorにあるLayerをクリックし、AddLayerをクリックでもできます。 Unity2018では標準で「PostProcessing」というレイヤーがあるのでそれを使うのもありですし、自分で新たに作るのでもどちらでもOKです。今回は標準で用意されている「PostProcessing」のレイヤーを使用します。 2-2 MainCameraの設定を行う Main Cameraをクリックし、AddComponent → Post-process Layerを追加します。 先ほど追加したPost-process Layerの設定を行います。TriggerにはMain Cameraを、Layerには先ほど設定したレイヤーを設定します。今回の場合だと「PostProcessing」というレイヤーを設定します。 次にPost-process Layerを設定したカメラ(今回だとMainCamera)をVRC World PrefabのReference Cameraに設定します。 2-3 空のオブジェクトを作る 次にHierarchyのCreate → Create Emptyで空っぽのオブジェクトを作成します。名前は分かりやすく「PPS」とでも名付けておきましょう。 先ほど「PPS」と名付け追加した空のオブジェクトをクリックし、AddComponent → Post-process Volumeを追加します。 追加をしたら「Post-process Volume」の設定を行います。 まず、Is Globalにチェックを入れます。これにチェックを入れることでワールド全体にエフェクトが掛かります。逆に「ワールド全体に掛けたくない!」「一部の部屋にだけ掛けたい!」といった場合はチェックは外しましょう。PPSの切り替えやワールドの一部にだけ掛ける方法は後述します。 次にProfileの横にあるNewをクリックします。そうすることでProfileが新たに作成されます。このProfileを使って各種エフェクトの設定を行っていきます。 そして最後に、このPost-process Volumeを追加したオブジェクトのLayerを 2-1レイヤーの設定を行う で追加したレイヤーに設定します。(今回だと「PostProcessing」というレイヤー) これでめんどくさい各種設定が終わりました!! 3.画面にエフェクトを掛ける 3-1 まず初めに これからワクワクのPPSを使って画面にエフェクトを掛けていこうと思います。サンプルとして私のワールドで見ていこうと思います。下の図はPPSを一切掛けていない素の状態です。 Post-process VolumeのAdd effectをクリックしてください。すると「なんのエフェクト追加すんの?」と聞かれるので選択しましょう。まずはBloomを選択したいと思います。 選択をすると以下の様なものが出ると思います。 今回はさらにColor Gradingというものも使用するのでもう一度Bloomの項目の下にあるAdd effectをクリックして同様に追加します。 今回は具体的な数値などについては省きます。めんどくさいので…… Bloomについて簡単に説明すると「明るい部分をより光らせて、強調する」機能だとふんわり思ってもらえればいいと思います。 Color Gradingは色調補正をする機能だと思ってください。 3-2 Bloomってなに? 主に弄るであろうBloomの設定について雑に説明すると Intensityは「Bloomの強さ」 Thresholdは「どの程度の明るさであるならばエフェクトを掛けるのか」 Diffusionは「光のにじむ強さ」 なのでこんな感じで数値を極端に弄ると…… こうなる↓(極端な例なのでマネしないで) VRで入ると目が痛すぎて大変なことになるのであまりにも強くするのはやめときましょう。 3-2-1 自己発光マテリアルを使用した表現 上の図を見ると「極端に光っているところとそうでないところがあるけど、何が違うの?」となる方がいる思いますが、これはPPSの設定の違いではなく、マテリアルの設定の違いです。間接照明の表現だったり、スポットライトの表現に使えると思います。 (左側Bloomなし / 右側Bloomあり) この光の表現を行うには自己発光マテリアルが必要になります。 設定は簡単で、まずはStandardシェーダーのマテリアルを作成します。そしてEmissionにチェックを入れれば自己発光マテリアルの完成です。 発光する色を指定したい場合はEmission下のColorを、発光する強さ変えたい場合はIntensityを弄りましょう。 自己発光マテリアルの発光度合い(強さ)だけを強くしたい場合は、Bloom側のIntensityを強くするのではなく、自己発光マテリアル側のIntensityを調整することをおすすめします。 Global Illuminationは通常のライトと同様でRealtimeとBakedがあり、ライティングが分かる方ならこの説明で分かる思います。分からない方は軽量化のためBakedにしちゃいましょう。 3-3 Color Gradingってなに? Color Gradingは画面の色調補正をする機能です。 Color Gradingは弄れば多少分かると思うのでさらに雑に説明すると Colorf Flterは「設定した色を画面全体に掛ける」 Saturationは「彩度の調整」 Contrastはそのまんま「コントラストの調整」 Post-exposure(UV)は「画面の明るさの調整」で値をマイナス方向へ弄れば、睡眠ワールドのナイトモードとして使えると思います。 なのでこんな感じで数値を極端に弄ると…… こうなる↓ こちらもあんまり極端に弄ると目に悪くなるので気をつけてください。 3-4 参考例 私がVRChatで公開している「SleepSoundHouse」のPPSの設定例を示します。あくまで参考例ですので、自分で色々試行錯誤してみてください。これが正しいわけではないです。多分もっといい設定がある…… (左側PPSなし/右側PPSあり) Bloomで間接照明やライトの光を軽く強調させ、Color Gradingで薄くオレンジ色の色調にしています。 以上でPPS(BloomとColor Grading)の基本的説明は以上になります。PPSには他にも様々なエフェクトやフィルターがありますが、VRでは非推奨・非対応なものがほとんどなので、使う機会はないと思います。 PPSを理解して、ワールドに設定するとめちゃくちゃ雰囲気がよくなるので是非覚えてくださいねー。 4.ワールド内で複数のPPSを使い分けたい・切り替えたい ここからは応用編です。 VRChatのワールドでボタンを押すことでナイトモードが起動したり、違う部屋に移動すると掛かっているPPSが違うことがあると思います。ここからはその導入方法について書こうと思います。 ⚠注意点 PPSの各種設定は各オブジェクトごとに設定されているのではなく、あくまでもProfileで管理・設定されているので複数の違うPPSを掛ける場合はその数ごとにProfileを作る必要があります。なので、さらに新しく違う効果のPPSを作る場合はProfileも新たに作成してください。 4-1 PPSのON/OFFをする PPSのON/OFFをするのに特に難しいことは必要なく、原理としてはミラーのON/OFFと全く一緒です。説明2の空のオブジェクトを作る で作成したPost-process Volumeを追加したオブジェクトをVRC_TriggerのSetGameObjectActiveでオンオフするだけです。何もPPS側で弄る必要はありません。VRC_Triggerの使い方については自分で調べてください。 4-2 ワールド内で複数のPPSを同時に使い分ける 同じワールドで部屋ごとに違うPPSが使われていることがあると思います。ここではその導入方法を説明します。 初めに使い分けたいPPSのIs Globalのチェックを外し、Add ComponentからColliderをアタッチします。Colliderの形はなんでもOKです。 このCollider内にカメラが入るとそのPPSが適応されます。 BlendDistanceを設定することで距離に応じた強さでPPSが適応されます。 しかし、このままだとアタッチしたコライダーが通常通り動作し、衝突してしまうので、「部屋に入れなーい」といった状況になります。次に、そうならないための設定を行います。 Edit → ProjectSettings → Physics → Layer Collision Matrix を開きます。そしてPPSのコライダーが衝突しないように、Post-process Volumeが追加されているオブジェクトのレイヤーのチェックを外します。(今回は「PostProcessing」というレイヤー)とりあえず、以下の様に全部外していいと思います。 以上で設定は完了です。 下のGIFを見てもらうとカメラがCollider内に入った時にだけ、PPSが有効化されていることが分かると思います。 ちょっとした補足 もしかするとUnityのSceneでPPSが適応された結果が見えない場合があるかもしれませんが、その場合はScene上部にある風景画(?)のアイコン横の▼をクリックしてPost Processingsにチェックが入っているか確認してください。 参考記事 ・Unity ルックデヴ講座 Post Processing Stack v2編 ・UnityDocumentation Emission
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【VRChat】PostProcessingを使ってワールドをより良くする

概要 「Lightingもある程度理解したし、(具体的になにすればいいか分かんないけど)なんかもっとワールドいい感じにしてー」みたいなのありますよね。私にはありました。 このPost-processingを使えば、より良い絵作りができると思います。完全に理解してオシャンティーなワールドを作りましょう。 解説について ・一応VRChatのワールド向けに書いていますが、それ以外でも使えると思います。 ・今回の記事ではBloomとColor Gradingについて解説します。 環境 ・Unity2018.4.20f1を使用 ・VRCSDK2-2020.11.16.12.43_Publicを使用 ・PostProcessingStack V2を使用 Post Processingってなに? Post-processing(ポストプロセス)とはカメラの画像にフィルターとかエフェクトを適用する処理のことです。取り合えず、(適切に)使ったらなんかよりいい感じの絵になるやつだと思っておいてください。ただし、掛け過ぎると目に悪くなるので注意してください。詳しくはこれ読んで。 ※以下からPost-processingのことを「PPS」と略します。 ↑ これが ↑ PPS掛けるとこうなる(分かりやすくするためにキツめに掛けています) 1. PPSv2の導入方法 Window → Package Managerを選択し、開きます。 導入可能なパッケージの一覧が表示されます。その中から「PostProcessingStack」を見つけてインストールを行います。 「PostProcessingStack」の横にチェックマークがついていれば、PPSの導入は完了です。 2. PPSを適用する前の準備 普通にめんどくさいので、ご機嫌がいい時にやりましょう。3ステップあり、遅くても20分も掛からないと思います。 2-1. レイヤーの設定を行う Edit → ProjectSettings → Tags and Layersを選択し開きます。 もしくは適当なオブジェクトのInspectorにあるLayerをクリックし、AddLayerをクリックでもできます。 Unity2018では標準で「PostProcessing」というレイヤーがあるのでそれを使うのもありですし、自分で新たに作るのでもどちらでもOKです。今回は標準で用意されている「PostProcessing」のレイヤーを使用します。 2-2. MainCameraの設定を行う Main Cameraをクリックし、AddComponent → Post-process Layerを追加します。 先ほど追加したPost-process Layerの設定を行います。TriggerにはMain Cameraを、Layerには先ほど設定したレイヤーを設定します。今回の場合だと「PostProcessing」というレイヤーを設定します。 次にPost-process Layerを設定したカメラ(今回だとMainCamera)をVRC World PrefabのReference Cameraに設定します。 2-3. 空のオブジェクトを作る 次にHierarchyのCreate → Create Emptyで空っぽのオブジェクトを作成します。名前は分かりやすく「PPS」とでも名付けておきましょう。 先ほど「PPS」と名付け追加した空のオブジェクトをクリックし、AddComponent → Post-process Volumeを追加します。 追加をしたら「Post-process Volume」の設定を行います。 まず、Is Globalにチェックを入れます。これにチェックを入れることでワールド全体にエフェクトが掛かります。逆に「ワールド全体に掛けたくない!」「一部の部屋にだけ掛けたい!」といった場合はチェックは外しましょう。PPSの切り替えやワールドの一部にだけ掛ける方法は後述します。 次にProfileの横にあるNewをクリックします。そうすることでProfileが新たに作成されます。このProfileを使って各種エフェクトの設定を行っていきます。 そして最後に、このPost-process Volumeを追加したオブジェクトのLayerを 2-1レイヤーの設定を行う で追加したレイヤーに設定します。(今回だと「PostProcessing」というレイヤー) これでめんどくさい各種設定が終わりました!! 3.画面にエフェクトを掛ける 3-1. まず初めに これからワクワクのPPSを使って画面にエフェクトを掛けていこうと思います。サンプルとして私のワールドで見ていこうと思います。下の図はPPSを一切掛けていない素の状態です。 Post-process VolumeのAdd effectをクリックしてください。すると「なんのエフェクト追加すんの?」と聞かれるので選択しましょう。まずはBloomを選択したいと思います。 選択をすると以下の様なものが出ると思います。 今回はさらにColor Gradingというものも使用するのでもう一度Bloomの項目の下にあるAdd effectをクリックして同様に追加します。 今回は具体的な数値などについては省きます。めんどくさいので…… Bloomについて簡単に説明すると「明るい部分をより光らせて、強調する」機能だとふんわり思ってもらえればいいと思います。 Color Gradingは色調補正をする機能だと思ってください。 3-2. Bloomってなに? 主に弄るであろうBloomの設定について雑に説明すると Intensityは「Bloomの強さ」 Thresholdは「どの程度の明るさであるならばエフェクトを掛けるのか」 Diffusionは「光のにじむ強さ」 なのでこんな感じで数値を極端に弄ると…… こうなる↓(極端な例なのでマネしないで) VRで入ると目が痛すぎて大変なことになるのであまりにも強くするのはやめときましょう。 自己発光マテリアルを使用した表現 上の図を見ると「極端に光っているところとそうでないところがあるけど、何が違うの?」となる方がいる思いますが、これはPPSの設定の違いではなく、マテリアルの設定の違いです。間接照明の表現だったり、スポットライトの表現に使えると思います。 (左側Bloomなし / 右側Bloomあり) この光の表現を行うには自己発光マテリアルが必要になります。 設定は簡単で、まずはStandardシェーダーのマテリアルを作成します。そしてEmissionにチェックを入れれば自己発光マテリアルの完成です。 発光する色を指定したい場合はEmission下のColorを、発光する強さ変えたい場合はIntensityを弄りましょう。 自己発光マテリアルの発光度合い(強さ)だけを強くしたい場合は、Bloom側のIntensityを強くするのではなく、自己発光マテリアル側のIntensityを調整することをおすすめします。 Global Illuminationは通常のライトと同様でRealtimeとBakedがあり、ライティングが分かる方ならこの説明で分かる思います。分からない方は軽量化のためBakedにしちゃいましょう。 3-3. Color Gradingってなに? Color Gradingは画面の色調補正をする機能です。 Color Gradingは弄れば多少分かると思うのでさらに雑に説明すると Colorf Flterは「設定した色を画面全体に掛ける」 Saturationは「彩度の調整」 Contrastはそのまんま「コントラストの調整」 Post-exposure(UV)は「画面の明るさの調整」で値をマイナス方向へ弄れば、睡眠ワールドのナイトモードとして使えると思います。 なのでこんな感じで数値を極端に弄ると…… こうなる↓ こちらもあんまり極端に弄ると目に悪くなるので気をつけてください。 3-4. 参考例 私がVRChatで公開している「SleepSoundHouse」のPPSの設定例を示します。あくまで参考例ですので、自分で色々試行錯誤してみてください。これが正しいわけではないです。多分もっといい設定がある…… (左側PPSなし/右側PPSあり) Bloomで間接照明やライトの光を軽く強調させ、Color Gradingで薄くオレンジ色の色調にしています。 以上でPPS(BloomとColor Grading)の基本的説明は以上になります。PPSには他にも様々なエフェクトやフィルターがありますが、VRでは非推奨・非対応なものがほとんどなので、使う機会はないと思います。 PPSを理解して、ワールドに設定するとめちゃくちゃ雰囲気がよくなるので是非覚えてくださいねー。 4.ワールド内で複数のPPSを使い分けたい・切り替えたい ここからは応用編です。 VRChatのワールドでボタンを押すことでナイトモードが起動したり、違う部屋に移動すると掛かっているPPSが違うことがあると思います。ここからはその導入方法について書こうと思います。 ⚠注意点 PPSの各種設定は各オブジェクトごとに設定されているのではなく、あくまでもProfileで管理・設定されているので複数の違うPPSを掛ける場合はその数ごとにProfileを作る必要があります。なので、さらに新しく違う効果のPPSを作る場合はProfileも新たに作成してください。 4-1. PPSのON/OFFをする PPSのON/OFFをするのに特に難しいことは必要なく、原理としてはミラーのON/OFFと全く一緒です。説明2-3の空のオブジェクトを作る で作成したPost-process Volumeを追加したオブジェクトをVRC_TriggerのSetGameObjectActiveでオンオフするだけです。何もPPS側で弄る必要はありません。VRC_Triggerの使い方については自分で調べてください。 4-2. ワールド内で複数のPPSを同時に使い分ける 同じワールドで部屋ごとに違うPPSが使われていることがあると思います。ここではその導入方法を説明します。 初めに使い分けたいPPSのIs Globalのチェックを外し、Add ComponentからColliderをアタッチします。Colliderの形はなんでもOKです。 このCollider内にカメラが入るとそのPPSが適応されます。 BlendDistanceを設定することで距離に応じた強さでPPSが適応されます。 しかし、このままだとアタッチしたコライダーが通常通り動作し、衝突してしまうので、「部屋に入れなーい」といった状況になります。次に、そうならないための設定を行います。 Edit → ProjectSettings → Physics → Layer Collision Matrix を開きます。そしてPPSのコライダーが衝突しないように、Post-process Volumeが追加されているオブジェクトのレイヤーのチェックを外します。(今回は「PostProcessing」というレイヤー)とりあえず、以下の様に全部外していいと思います。 以上で設定は完了です。 下のGIFを見てもらうとカメラがCollider内に入った時にだけ、PPSが有効化されていることが分かると思います。 ちょっとした補足 もしかするとUnityのSceneでPPSが適応された結果が見えない場合があるかもしれませんが、その場合はScene上部にある風景画(?)のアイコン横の▼をクリックしてPost Processingsにチェックが入っているか確認してください。 参考記事 ・Unity ルックデヴ講座 Post Processing Stack v2編 ・UnityDocumentation Emission
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

UnityとGitHubActionsを使って自動ビルドする【複数プラットフォーム同時ビルド】

はじめに 最終的に仕上がったものは以下のリポジトリで公開してあります。 分からないことがあったときは参考にしてみてください。 手順 下準備 適当なUnityプロジェクトのリポジトリを用意します。 1. ULFファイルを入手する GitHub Actions上でUnityライセンスをアクティベートするためのULFファイルを入手します。 この手順に関しては別の記事として書かせてもらいました。(GUIのみで簡単にできます) 2. ULFファイルをSecretsに登録する プロジェクトリポジトリのSettings > Secretsメニューを選択する。 New repository secretボタンをクリックする。 Nameに"UNITY_LICENSE"と入力し、ValueにULFファイルの中身をコピペする。 Add secretボタンをクリックする。 これでULFファイルの中身は非公開のまま、環境変数として扱うことができます。 3. GitHub Actions上でビルドするためのYAMLを記述する リポジトリの.github/workflows/フォルダ下にbuild.yamlを作成し、以下のように記述します。 build.yaml name: Build on: pull_request: {} push: { branches: [main] } jobs: build: name: ${{ matrix.targetPlatform }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: targetPlatform: - StandaloneOSX # Build a macOS standalone (Intel 64-bit). - StandaloneWindows # Build a Windows standalone. - StandaloneWindows64 # Build a Windows 64-bit standalone. - StandaloneLinux64 # Build a Linux 64-bit standalone. - iOS # Build an iOS player. - Android # Build an Android .apk standalone app. - WebGL # WebGL. steps: # Checkout - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 lfs: true # Cache - name: Cache uses: actions/cache@v2 with: path: Library key: Library-${{ matrix.targetPlatform }} restore-keys: Library- # Build - name: Build uses: game-ci/unity-builder@v2 env: UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} with: targetPlatform: ${{ matrix.targetPlatform }} # Upload Build - name: Upload Build uses: actions/upload-artifact@v2 with: name: Build-${{ matrix.targetPlatform }} path: build/${{ matrix.targetPlatform }} 4. 実際にビルドしてみる リポジトリにPushまたはPull Requestを行い、プロジェクトをビルドするワークフローを実行する。 ワークフローが完了するまで待つ 以下のように✔マークが表示されていれば成功です。 右上のArtifactsから、ビルドされた成果物をダウンロードできます。 さいごに 最終的に仕上がったリポジトリです。詰まったときは参考にしてみてください。 CIは初めてであまり詳しくないので、間違えているところがあれば教えてもらえると幸いです。 参考 Github Actions で UnityPackage をビルドしたら快適だった話 GameCI - Builder
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む