「 Qiita と CoreServer に Lua(ルア) の記事を書いていたんだが
運営が気に入らんので消したんで Crieit に書き直すぜ☆
わたしは ルール としゃべってんのか、と思うときがあるよな☆ 態度が定義された人間相手の話しはつまらん☆」
「 Squirrel (スクワーレル)ではなく Lua でいいのか☆?」
「 今どき Squirrel かだぜ☆ 流行ってる方使おうぜ☆」
「 サイトデザインが わかりづらいな……☆ Download は Webページの一番下にあるぜ☆
今どきは 最初にプログラムを触るときは Stable release (安定版) を選んでおくのが ふつう だろう☆」
「 すると Source Forge(ソース・フォージ)に飛ばされるという……☆
ファイルをダウンロードできる物置サイトだぜ☆」
「 .tar.gz
ファイルをダウンロードしてしまったんだけど!
これ Linux 版じゃないの?!」
「 C++言語ファイルが出てきた……☆ コンパイルして使えということかだぜ☆」
「 今どきのゲーム屋は Unity勢 だろ☆
Unityに組み込めるのかだぜ☆?」
「 Unity勢に要らね、と思われたら 流行らんよな、ゲーム屋界隈で☆
だいぶ前から ゲーム制作初心者にとっての メジャーな入り口だぜ☆」
「 Unityから見た グルー言語は C# か JavaScript の2択なんじゃないの?
Lua とか Squirrel とか使ってないんじゃないの?」
「 NuGet で Squirrel をインストールできないのかだぜ☆?」
[Visual Studio 2019] - [ツール] - [NuGet パッケージ マネージャー] - [ソリューションの NuGet パッケージの管理] - [参照]
Squirrel
「 438K もダウンロードされているパッケージがあるぜ☆」
「 開発者のPCにはインストールできるかもしれないが、
Unity での Squirrel の利用実績はどうなんだぜ☆?」
「 使って見りゃ分かるかだぜ☆ NuGet でインストールしてみようぜ☆?
Visual Studio 使ってて NuGet 使ってないやつなんか いないよな☆ 説明は不要だろ☆」
「 using Squirrel;
でコンパイル通るから もう使えるみたいだけど、何から始めたらいいの?」
「 ↑Document(ドキュメント)と書かれているものを探して、読めだぜ☆」
「 おっ、読みやすい……、しかし Squirrel 書けるやつは プログラマーだよな☆」
「 シナリオライターや、イラストレーター に使わせる スクリプト言語 ではないわね。
プログラミング未習得者が どれだけ 触れないか 見えてないのよ」
「 ↑Squirrel でスクリプトかいて、C# でどうやって実行すんの?」
「 ↑グーグルは Squirrel
の敵なのだろうか……、 SQuirreL
ばっかり検索で出てくるぜ☆」
「 ゲーム本体のプロセスで動いている変数に干渉できないだろ☆」
「 どうやって スクリプト・ファイルを実行するのか……☆?」
「 ↑じゃあ Zip でダウンロードして C# で実行してみようぜ☆」
「 .sln
ファイルがあるんで Visual studio 2019 で開いてみたが C++ の開発環境のインストールを求められるな☆
じゃあ インストールしよ☆」
「 マルチプラットフォームの Unity が何とも知らん C++ なんか対応するのかだぜ☆?」
「 じゃあ ソリューションをコンパイル……、あっ、エラーが8個もあるぜ☆」
「 Core.csproj
というプロジェクトが無いみたいよ?」
「 ソリューションは Visual Studio 2017 をターゲットにしてあるみたいだな……☆
プロパティを開いて Visual Studio 2019 に変えてやろう☆」
「 NuGet でインストールできないか調べてみようぜ☆?」
「 Core を消すと、 using NuGet;
がコンパイル・エラーになったぜ☆」
「 Core が無いと using SharpCompress.Compressors;
もコンパイル・エラーになってるな☆」
「 DeltaCompressionDotNet
と、 Mono.Cecil
と、 SharpCompress
と、 Splat
を NuGet でインストールしろということらしいが、
説明がない☆ 説明がないのは嫌☆ Squirrel とは仲良くなれる気はしない☆」
「 Lua も Squirrel も さくっと使えないんだな☆」
Roslyn for Scripting – C#プログラム内でC#で書かれたスクリプトを実行しよう
「 なんということだぜ☆ 時代は Roslyn なのかだぜ☆?」
「 Microsoft.CodeAnalysis.CSharp.Scripting
パッケージでもインストールするか……☆」
using Microsoft.CodeAnalysis.CSharp.Scripting; // Roslyn使うなら .Net Framework 4.6 以上☆(^~^)
// C#を使った外部スクリプトのテストだぜ☆(^~^)
CSharpScript.RunAsync("System.Console.WriteLine(\"Hello Roslyn For Scripting!!\");").Wait();
Task<double> result = CSharpScript.EvaluateAsync<double>(@"
var pi = 3.14;
var r = 5;
pi * r * r
");
result.Wait();
Console.WriteLine(result.Result);
Output:
Hello Roslyn For Scripting!!
78.5
// 次のテスト☆(^~^)
{
var textList = new List<String>();
// 通常のインスタンスメソッド呼び出し
textList.Add("プログラムから文字列追加");
// スクリプトから、インスタンスを利用。
CSharpScript.RunAsync("Add(\"スクリプトから文字列追加\");", globals: textList).Wait();
// List<String>に格納されている文字列を出力
foreach (var text in textList)
{
Console.WriteLine(text);
}
}
Output:
プログラムから文字列追加
スクリプトから文字列追加
「 this が textList を指しているんじゃないか☆?」
「 this 使ったら たいへん大事なエラーが起こってしまった☆」
<書きかけ>
Crieitは個人で開発中です。
興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!