Skip to content

KO CSharp Structure

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

프로그램 및 스크립트 구조

설명서 C# · 예시 UO

C# 프로그램은 유형 선언, 메소드, 표현식 및 연산자로 구성됩니다. using는 네임스페이스를 연결합니다. namespace 유형을 구성합니다. 클래스는 데이터와 동작을 저장합니다. 메소드 코드는 { } 안에 있으며 일반 명령문은 ;로 끝납니다.

간단한 예제 (Example.csx)

이 예제를 Example.csx로 따로 저장하고 이 페이지의 다른 예제와 독립적으로 실행하세요.

Example.csx:

UO.Print("Ready");
await WaitAsync(10);
UO.Print("Done");

결과:

Ready
Done

간단한 예제 (Program.cs + Minimal.csproj)

이 예제를 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

간단한 시나리오 .csx

포함된 스크립트는 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();

일반 프로그램 .cs

일반적인 프로젝트에서 진입점은 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 하나면 충분합니다. 게임 클래스에서 API는 매개변수나 필드를 통해 명시적으로 전달됩니다. 임의의 일반 프로젝트는 자체적으로 전역 UO를 수신하지 않습니다.

공식 문서: 프로그램 및 스크립트 구조 - Microsoft Learn.

일반 .cs 또는 .csproj 코드에서는 어셈블리에 ICSharpScript가 있어도 Main이나 최상위 문이 우선합니다. 실행 가능한 진입점이 없으면 public이고 추상 형식이 아니며 public 매개 변수 없는 생성자가 있는 ICSharpScript 클래스를 하나 제공해야 합니다. 일반 코드는 전달받은 컨텍스트나 CSharpScriptContext.Current를 통해 게임 API를 사용하며 선언되지 않은 전역 UO 변수를 자동으로 받지 않습니다.

Clone this wiki locally