Unity VFX Graph 準備編

VFXを初めて触る方向けのチュートリアル的なものです。 プロジェクト作成~VFX導入 Unity Hubを起動し、右上のNew Projectを選択 以下のように入力してCreateProjectを選択 Editor Version: 今回使いたいUnityのバージョン 3D (URP) Project name: 好きな名…

Unity シーン間でデータを受け渡す方法まとめ

Unityではシーンをまたぐときに全てのゲームオブジェクトが破棄されます。 そのため前シーンのデータを利用するには、データを受け渡す必要があります。 シーン間でデータを受け渡す方法 シーン間のデータの受け渡しはいくつか方法があります。 DontDestroyO…

Unity staticクラスを使ってシーン間でデータを受け渡す

staticクラスを用いてシーン間でデータを受け渡す方法について紹介します。 今回は、SceneAからSceneBに遷移することを考えます。 まずは受け渡したいデータを含むstaticクラスを作成しましょう。 CommonData.cs public static class CommonData { public st…

Unity Addressableの基本的な使い方

Addressableとは? Addressable(アドレサブル)とは、一言でいうと「色んなアセットにアドレスをつけて管理できる機能」のことです。 ではなぜアドレスをつけると便利になるかというと、以下のようなメリットがあるためです。 アドレスを指定することで、ス…

C#デザインパターンカタログ GoFの23パターン

GoFのデザインパターン23種類をC#で書いたまとめ記事です。 本記事はGang of Fourの「オブジェクト指向における再利用のためのデザインパターン」で紹介されている23種類のデザインパターンを参考に、最小構成のC#サンプルコードを列挙しています。 どのデザ…

Unityの新InputSystemとSteamworks SDKが競合してゲームパッドが反応しない

Unityの新InputSystemを試していたところ、ゲームパッドが反応しませんでした。 色々確認したところ、導入していたSteamworks SDKのSteamManagerを非アクティブにすると正常に動作することが分かりました。 じゃあ、SteamManagerを使えないのかというとそう…

herokuのGoogle API認証を簡単にするビルドパックの紹介

herokuでGoogle APIを認証するのは意外と骨が折れる。 それを簡単にしてくれるのが、こちらのビルドパックだ。 github.com 使い方 herokuにログインし、対象のアプリを選択する。 Settingsタブ内の、BuildpacksのAdd buildpackボタンをクリック。 表示された…

pkg_resources.VersionConflict: importlib-metadata エラーの対応

pipenv installをしたら、下記のエラーが発生した。 pkg_resources.VersionConflict: (importlib-metadata 4.11.3 (/home/user/.pyenv/versions/3.7.5/lib/python3.7/site-packages), Requirement.parse('importlib-metadata<2,>=0.12; python_version < "3.…

AttributeError: module 'ffmpeg' has no attribute 'probe'への対応

下記を実行する。 $pip install ffmpeg-python

fishが原因でVcXsrvがError: Can't open display:を返す問題への対処法

概要 VcXsrvというのを使ってWSLからGUIを起動するための設定を行っていた。 これは、matplotlibやPySimpleGUIなどを使う時に便利だ。 しかし、どれだけやってもError: Can't open display:と表示されてしまった。 結局、導入していたシェルfishの設定が問題…

Steamworks.NETをUnityに導入する

Steamworksとは Steamにリリースをする際に利用するデベロッパーツールの名称。 基本的には、https://partner.steamgames.com のこと。 Steamworks SDKとは Steamworksにビルドをアップロードするなど、ウェブで完結できないことをやる為のツール。ダウンロ…

【Unity】多言語対応をスプレッドシートで管理するシステム

多言語対応の問題点 UnityではTextMeshProなどを用いて文字を表示できます。 しかし多言語に対応する場合、例えば↓のようなスクリプトを書かなくてはいけません。 var lang = Application.systemLanguage; if (lang == SystemLanguage.Japanese) { text.text…

WSLでvim-lsp-settingsを使うと上手くいかないときの対応

問題 vim-lsp-settingsをLSP環境で使用し,:LspInstallServerを実行してもPlease do :LspInstallServer to enable Language Serverが表示される. 解決方法 .vimrcに下記を記述する. let g:lsp_settings_extra_paths=['/mnt/c/Users/[ユーザー名]'] 解説 WS…

パッケージリストを消したのにapt updateでFailed to fetchエラーがでる

sudo apt updateを実行した際、Failed to Fetchエラーが発生した。 下記のように、aptのパッケージリストを削除すれば直るという記事もあるが私はダメだった。 qiita.com ダウンロードサーバーの変更 sudo apt updateで参照するサーバーを変更することで解決…

UnityのエディタはWSLのVimが最強だということ

Unityのコード編集 Unityのコード編集ツール候補には次のような選択肢がある. Visual Studio Visual Studio Code Rider Vim Emacs IDE 単にコードを書く支援だけじゃなく,デバッグ機能や便利ツール全盛り!というIDE(統合開発環境)がある. これは,すご…

WindowsのUnityでVimを使う手順

UnityはWindowsで動かしたいけど、Vimが使いたいので、WSLでVimを使うことにした。 WSLのインストール WSL2を使っても良かったが、追加のコンポーネントが必要とのことで、ひとまずWSL1で利用することにした。 WSL2でも問題ない。 https://qiita.com/mataril…

【Unityシェーダ】ZWrite Onなのに描画順が崩れる場合の対応

問題 サーフェスシェーダで、半透明なシェーダを作っている際に描画順が崩れた。 元コード↓ Shader "hoge/hoge" { Properties { } SubShader { ZWrite On Tags { "Queue" = "Transparent" "RenderType" = "Transparent" } CGPROGRAM #pragma surface surf La…

ffmpegで動画のアスペクト比を変更する

下記のように利用する. $ ffmpeg -i input.mp4 -vf scale=1920:1080,setsar=1 output.mp4 画像等の場合はsetsar=1が不要だが,動画では必要となる. 1920x1080(iPhone 8+)の動画を,2688x1242(iPhone 11 Pro Max)にリサイズした結果は以下. 1920 x 108…

uGUIのTextにルビをつける【Unity】

ルビ振り問題 uGUIで漢字にルビをつけたいとき,Unityでは結構面倒です. 普通にやると,新しくTextオブジェクトを作成して,漢字の上に位置を合わせるしかありません. これを全部の漢字にやっていては,あまりに時間がかかる上に,変更に耐えられません. …

UnityのビルドをSteamにアップロードする方法

公式サイトからSDKをダウンロード ↓のサイトから最新のSteamworks SDKをダウロードします. zipを解凍後,toolsフォルダにあるSteamPipeGUI.zipも解凍して,SteamPipeGUI.exeを起動します. sdk > tools > ContentBuilder > content 内にUnityのビルドで出力…

Windowsの個人用ファイルを保持した初期化の挙動

消えるもの インストールしていたものはアンインストールされた アカウント情報も初期化された WSLは消えた Windows Terminalも消えた 消えないもの ドキュメントフォルダはもちろん,ダウンロードフォルダやC直下のファイルも全て残っていた Windows Insider…

Ubuntuから始めるunixporn

私のデスクトップがこちらです。 ちょっとカッコいいですよね。 こんな感じで、デスクトップを自分好みにカスタマイズするのを巷ではunixpornと呼んでいます。 カスタムの幅が広いので大抵の場合はLinuxを使うことが多いです。 今回はとりあえずgruvbox dark…

Ubuntuで固定ip

/etc/netplan/99-netcfg.yamlというファイルを作成し,下記の内容を記述する. network: version: 2 renderer: NetworkManager ethernets: enp4s0: addresses: [192.168.3.11/24] gateway4: 192.168.3.1 nameservers: addresses: [8.8.4.4] その後,下記コマ…

Ubuntu 20.04でChrome Remote Desktopにデバイスを追加出来ない問題への対応

Chrome Remote DesktopをUbuntu20.04から利用したところ,タイトルの問題が発生しました. これは,デフォルトでconfigファイルが作成されないのが原因のバグのようです. 下記コマンドを実行し,Chromeを再起動することでなおります. $ mkdir ~/.config/ch…

lsp-vimでエラーハイライトの見た目を変える方法

vim-lspでは,下記コマンドを使うことで,ハイライトの表示(色とか,下線とか)を変えることが出来ます. :highlight link <lspのスタイル名> <設定するスタイル名> 例えば,下記のように使います. :highlight link LspErrorHighlight Error この例では,LspErrorHighlight</lspのスタイル名>…

Ubuntu ターミナルでzipを使って圧縮する方法

指定のディレクトリをzipに圧縮する場合。 zip oupput.zip -r inputdir

UbuntuでアプリをGUIから強制終了する方法

System Monitorを起動し、アプリ名等で検索。 終了させたいプロセスを選択して右クリック→killを選択。

ffmpegで動画ファイルを圧縮する方法

ffmpeg -i path/to/inputfile -crf 23 path/to/outputfile -crfを使う. -crfの数値が大きいほど圧縮率があがる. 値は0〜51の範囲で指定可能. 23くらいがちょうどよい.

moviepyでAttributeError: module 'moviepy.audio.fx.all' has no attribute 'audio_fadein'エラーへの対応

エラー内容 AttributeError: module 'moviepy.audio.fx.all' has no attribute 'audio_fadein 解決方法 from moviepy.editor import * 上記のように一括でインポートするのをやめて、必要なものだけ個別にインポートすることで解決できます。 例えば、VideoF…

Ubuntu20.04 LTSでjlistingを使う

LaTexのデフォルトだとjlistingが使えないので、導入します。 まずは↓のサイトからjlisting.sty.bz2をダウンロード。 osdn.net これを解凍したjlisting.styを/usr/share/texlive/texmf-dist/tex/latex/listing/に移動させる。 その後下記コマンドを実行すれ…