東方弾幕風 CommonData系の解説 概要  @CommonData系の関数は、スクリプト間でデータをやり取りするために使用します。      これを使えば、   ・自作自機と自作ステージとを連携させて独自のパワーアップシステムを作成する。   ・得点を保存し、ランキングを作成する。   などのことができるようになります。   (使いこなせばもっといろんなことができたり)  Aこの関数群が何をするを簡単に言えば   「どこからでも値を読み書きできる変数」のようなものを作成したり読み書きしたりファイルに保存したりします。  (通常の変数は同スコープ内でしか使えません。これは基本的にメリットですが、たまに困るときもあるのでこの関数があります) 基本的な使い方  @まず、「どこからでも値を読み書きできる変数」を作成します。   例:SetCommonData("hogehoge",1);   これはhogehogeという名前の「どこからでも値を読み書きできる変数」を宣言し、同時に1を入力しています。   let hogehoge=1; と同じようなことをしている、と理解してしてもらっておkかと。  Aせっかく作成したので読み取ってみましょう。   例:let a=GetCommonData("hogehoge");   これは変数aに、@で保存した値を入れています。   ここで重要なのは「@とは違うスクリプトでも問題なく使える」ということです。   ちなみにGetCommonDataとGetCommonDataDefaultの違いは、まだSetCommonDataで作成していない名前のものを読み取ろうとした場合に返される値の違いです。   くわしくはヘルプをどうぞ。  Bいらなくなったら消しましょう。   ClearCommonDataは、いままでSetCommonDataで作成したもの全てを消します。リセット!   DeleteCommonDataは、特定の名前のものだけを消します。   どちらにせよ、スクリプト終了時に自動で削除されるので、絶対に消さなければならない、というようなことはありませんのでご安心を。  Cファイルに保存してみましょう。   例:SaveCommonData();   ファイル名は自動で指定されます。というか指定できません。   これを使えばスクリプトが終了しても保持しておきたいデータを残すことが出来ます。   スコアランキングなどはこれを使って実装しましょう。   ちなみにSaveCommonDataInReplayFileは、新しくファイルを作るのではなく、リプレイファイルの中にデータを書き込みます。  D保存したファイルを読み込んでみましょう。   例:LoadCommonData();   同じくファイル名は自動で指定されます。というか指定できません。   ちなみにこの仕様の関係上、この関数は「SaveCommonDataを使ったのと同じスクリプトでしか使えない」ので注意してください。  Eとまあここまでが基本的な使い方です。   ここまで出てきた関数を使いこなせば、今までできなくて困っていた事がいろいろ出来るようになります。   Have a nice DANMAKU life !! Exな使い方  ここからはCommonData系の、さらに踏み込んだ使い方を説明します。  @前置きな話   ステージスクリプトを公開されている作者さんはたくさんいます。   追加自機を公開されている作者さんもたくさんいます。   そして、大体のステージスクリプトでは自機はデフォを含め、ステージ作者以外の誰かが作った自機を使えます。   さてここで問題。ステージと追加自機、両方がCommonData系を、しかも同じ名前を使っていた場合はどうなるでしょう?  Aそんな問題を解決するために   共有データ空間と言うものがあります。   これは「自分専用のエリア」をつくり、その中でCommonData系の関数を使おうじゃないかという発想です。   これを使えば、他の誰かがSetCommonDataでどんな名前を使っているのかを気にする必要がなくなります。   (余談ですがこの考え方はプログラミング言語のC++などでも採用されている由緒正しい(?)やり方だったりします。)  Bエリアを作ってみましょう   例:CreateCommonDataArea("MyWorld");   「MyWorld」という名前のエリアを作ってみました。この中でなら好き放題に名前を使うことが出来ます。   名前は出来るだけ(少なくとも上記の例よりかは)複雑にしましょう。   せっかく自分専用のエリアを作ろうとしているのに、他の人と名前がかぶってしまっては元も子もありません。  C作成したエリア内に「どこからでも値を読み書きできる変数」を作成します。   例:SetCommonDataEx("MyWorld","hogehoge",2);   これはMyWorld内にhogehogeという名前の「どこからでも値を読み書きできる変数」を宣言し、同時に2を入力しています。   ちなみに、いちいちMyWorldとか打つのは面倒だし間違いの元にもなるので、変数を使うと吉です。  D以下略   基本的に関数名の最後にExが付く、引数にエリア名が必要、以外は基本的なものと大差はありません。   あとはヘルプを読みながらいろいろと試してみましょう! あとがき  今更ですが、右端で折り返したほうが読みやすいかもしれません。  なお、この文章の転載(加筆・修正もヨロシク)はご自由にどうぞ。