Repository navigation
JA CSharp Structure
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
C# プログラムは、型宣言、メソッド、式、演算子で構成されます。 using は名前空間を接続します。 namespace はタイプを整理します。クラスはデータと動作を保存します。メソッド コードは { } 内にあり、通常のステートメントは ; で終わります。
この例を Example.csx として別に保存し、このページの他の例とは独立して実行してください。
Example.csx:
UO.Print("Ready");
await WaitAsync(10);
UO.Print("Done");結果:
Ready
Done
この例を Program.cs として別に保存し、このページの他の例とは独立して実行してください。
Program.cs:
// PROJECT-EXAMPLE
System.Console.WriteLine("Ready");Minimal.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
<ItemGroup><Compile Include="Program.cs" /></ItemGroup>
</Project>dotnet run --project Minimal.csproj結果 (Minimal.csproj):
Ready
埋め込みスクリプトは、UO、Args、Cancellation、WaitAsync を受け取ります。ステートメントは上から下に実行されます。クラスProgramは必要ありません。
string message = "Script started";
UO.Print(message);
await WaitAsync(100);
UO.Print($"X={UO.GetX()}, Y={UO.GetY()}");関数を宣言しても、それ自体は実行されません。 ReportPosition() という呼び出しは彼女の体によって行われます。
void ReportPosition()
{
int x = UO.GetX();
int y = UO.GetY();
UO.Print($"Position: {x}, {y}");
}
ReportPosition();
await WaitAsync(100);
ReportPosition();一般的なプロジェクトでは、エントリ ポイントは Main またはトップレベル コードです。名前空間、複数のファイル、カスタム ライブラリは、標準の C# プロジェクトとして設計されています。
// PROJECT-EXAMPLE
using System;
namespace UserTools;
internal static class Program
{
private static int Main(string[] args)
{
Console.WriteLine(args.Length > 0 ? args[0] : "Ready");
return 0;
}
}.csproj は、ターゲット プラットフォーム、ソース、依存関係、およびコンパイル オプションを説明します。 .cs はコードを保存します。 .csx は、スクリプト実行のスクリプトを示します。拡張子を変更しても、プログラムの構造やエントリ ポイントは自動的に変更されません。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>典型的な構造: MyScript.csproj、Program.cs、Models/、Services/。小規模なシナリオでは、.csx 1 つで十分です。ゲーム クラスでは、API はパラメータまたはフィールドを通じて明示的に渡されます。任意の通常のプロジェクトは、それ自体ではグローバル UO を受け取りません。
公式ドキュメント: プログラムとスクリプトの構造 - Microsoft Learn。
通常の .cs または .csproj では、アセンブリに ICSharpScript が含まれていても Main またはトップレベルステートメントが優先されます。実行可能なエントリポイントがない場合は、パブリックで非抽象、パブリックな引数なしコンストラクターを持つ ICSharpScript クラスを 1 つ提供してください。通常のコードでは渡されたコンテキストまたは CSharpScriptContext.Current 経由でゲーム API を使用し、未宣言のグローバル変数 UO は提供されません。
ClassicUO — Bad Newbie & C# Scripts IDE