
ティッシュ配り
駅前でティッシュ配りをしているお姉さんが何故か自分の方にだけは寄ってこない気がする自虐気質な皆さんこんにちは。ここ最近の激しい寒暖差のせいか鼻風邪をこじらせているのでティシュは必需品なんですが、何故かそういう時に限ってティッシュ配りに出会わない。巡り合わせの悪さか避けられているのか分かりませんが、いくらでも頂くのでティッシュ下さい。
Steamストアページ
リリース時期はずっと先なんですが必要に迫られて急ごしらえですがSteamに制作中のリズムゲーム「Under A Groove」のストアページをオープンしました。
良くも悪くもセルフパブリッシングで締め切りがないので気ままに作っていたのですが、近々大きな展示会に出展されることになったので、そのチャンスを逃がさぬようストアページを作成してみました。
相変わらずストア開設に必要な画像の数が多くて心が折れそうになりましたが、何とか用意することが出来て審査も一発で合格することが出来ました。ありがとうございます。
また、これに合わせてXのプロフィールの方も更新しています。
そちらにもストアページと同じティザー動画を上げているので、動画をご覧になりこのゲームが気になった方はウィッシュリストへの登録をお願いします。
UnityのC#バージョン
どこか風の噂でUnityの6.3 LTSからはC#のバージョン13以降も利用可能と聞いたので、C#12の記述式で新規クラスを作ってみるとVisual Studioのエディタ上に赤い線(=バグ)が表示されコンパイルできず。ん~、噂はあくまで噂だったのか・・・。

調べてみるとUnityの公式C#サポートは現在C# 9.0までとなっているらしくC#13どころか10や11も使えないらしい。
いや、正確にはUnityが使うC#コンパイラは既にC#11に対応したものになっているものの、デフォルトでC#9に抑えられているみたい。
しかしながら、C#の10や11には便利な機能があるので何とか使えないものかとネットを探ってみると、現状のUnity6.3でもC#の10,11を使う方法があったので今回はそのご紹介
コンパイラの設定
前述のようにUnityのC#コンパイラはデフォルトでC#9に抑えられているのでそれをC# 10もしくは11に設定する必要があります。
その為にはcsc.rspというファイルをAssetsフォルダの直下に作り
-langVersion:10
上記の内容を書き込みます。11の場合は「10」ではなく「preview」と記述します。
もしアセンブリ定義ファイル(.asmdef)を使ってコードを分けている場合、.asmdefがあるフォルダ毎に設定が必要なので、先ほどと同じ内容のcsc.rspファイルを.asmdefファイルと同じ場所に作成します。
コードエディタの設定
Visual StudioやVSCodeを使ってスクリプトの編集をしている場合、それらコードエディタに対してC#のバージョンを正しく指定しないとコードエディタ上でエラーとなってしまいます。
幸いにもこの作業を自動でやってくれるツール(CsprojModifier)が公開されているのでPackage Managerから取り入れて使うことが出来ます。
PackageManager を開いて「+ > Add package from git URL...」を押して

以下のURLを入力してInstallボタンを押します。
https://github.com/Cysharp/CsprojModifier.git?path=src/CsprojModifier/Assets/CsprojModifier
プロジェクト内に「CsprojModifier」がインストールされます。
次にUnityプロジェクトのルートフォルダに、LangVersion.propsという名前のファイルを作り、以下の内容を書き込みます。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LangVersion>10</LangVersion>
</PropertyGroup>
</Project>
11の場合はLangVersionタグには「11」と記述します
LangVersion.propsを作成したらUnityエディタで Project Settings > Editor > C# Project Modifier を開きます。

Additional project importsにて「+」ボタンを押して、パスに LangVersion.props と入力
.asmdefを使っている場合にはThe project to be added for Importの設定にすべてのアセンブリの.csprojファイル名をここに追加します。

設定が終わったら、ウィンドウの下にあるRegenerate project filesボタンを押して変更を反映させます。押下しても特にメッセージが出ないので不安になりますが一度押せばちゃんと反映されているので大丈夫です。
C# 10,11の機能
C# 10で使える機能についてはこちらの記事にまとめられています。
qiita.com個人的に便利だと思ったのはglobal usingが使用できることで、これを使用すると必要なusing設定がプロジェクト全体に有効となり各スクリプト毎に書き込む必要がなくなります。
例えばOdin Inspectorなどはどのスクリプトでも使用するのでGlobalImport.csなどを作って、そこに
global using Sirenix.OdinInspector;
と設定しておけば、スクリプトを作成するたびにusing設定を行うがなくなり手間が省けます。
C# 11の機能はこちらの記事が参考になります。
