순수 C#으로 Unity 게임 만들기

15751 단어 unitycsharp
iOS 엔지니어로서 나는 가능한 모든 번거로움을 피하고 순수한 Swift 코드로 UI 구성 요소를 작성하기 위해 Storyboard를 버렸습니다. 얼마 전에 Windows Phone 앱용 Visual Studio에서 XAML을, Android 앱용 Android Studio에서 XML을 얼마 전에 수행했으며 좋은 경험을 했습니다. 하지만 저는 코드로 무언가를 작성하는 데 익숙하기 때문에 Unity 에디터와 시뮬레이터가 꽤 좋지만 Unity 게임에도 똑같이 하는 것을 좋아합니다. 코드로 무언가를 선언하는 것이 편할 뿐만 아니라 코드를 비교하고 구성하기 쉽다는 것을 알게 되었습니다. 또한 Unity 에디터에서 대부분의 중요한 구성 요소와 속성이 이미 연결되어 설정되어 있기 때문에 구성 요소가 작동하는 방식에 대해 더 많이 배웁니다. 따라서 우리가 모르는 몇 가지 매우 분명한 사항이 있습니다.

편집기에서 할 수 있는 모든 작업을 코드로 표현할 수 있습니다. 구성 요소 설정, 앵커 변환, 애니메이션, 사운드 등은 모두 코드에서 가능하며 올바른 네임스페이스만 사용하면 됩니다. Welcome to the Unity Scripting Reference에 많은 정보가 있습니다. Unity 2018에는 Visual Studio Community가 있어 코드 작성이 매우 편합니다.

자바스크립트와 C



Unity가 Kotlin 또는 Swift를 지원한다면 매우 기쁠 것입니다. 하지만 현재로서는 Javascript and C#만 지원됩니다. 저도 순수한 Javascript의 열렬한 팬이지만 형식 안전성 때문에 C#을 선택하고 대학에서 XNA 및 ASP.NET 프로젝트를 위해 공부한 언어이기 때문에 C#을 선택했습니다.



들여 쓰기



저처럼 2칸 들여쓰기가 마음에 드시면 Visual Studio의 기본 설정으로 이동하여 편집기 설정을 변경할 수 있습니다.



게임오브젝트와 캔버스



Unity 에디터에서 임의의 UI 요소를 화면으로 드래그하면 Canvas 및 EventSystem도 생성되는 것을 볼 수 있습니다. 이것들은 미리 정의된 Component 묶음이 있는 GameObject입니다.



이것을 코드로 작성하려면 화면에 표시되는 내용을 따르기만 하면 됩니다. 처음에는 오브젝트와 속성을 배우기 위해 에디터를 사용해야 하지만 나중에 Unity와 Unity의 많은 GameObject 에 익숙해지면 코딩만 하면 됩니다. 참아주세요. 처음에는 코드가 번거로울 수 있지만 분명히 많은 것을 배울 수 있습니다.

저는 보통 재사용 가능한 코드를 파일로 구성합니다. C# 파일을 만들고 이름을 Sugar 로 지정하겠습니다. EventSystem 및 UI의 경우 UnityEngine.EventSystems가 필요하고 UnityEngine.UI 네임스페이스를 사용합니다.

EventSystem을 만드는 방법은 다음과 같습니다.

public class Sugar {
    public GameObject makeEventSystem() {
        GameObject systemEventObject = new GameObject("EventSystem");

        EventSystem system = systemEventObject.AddComponent<EventSystem>();
        system.sendNavigationEvents = true;

        StandaloneInputModule module = systemEventObject.AddComponent<StandaloneInputModule>();
        module.horizontalAxis = "Horizontal";
        module.verticalAxis = "Vertical";
        module.submitButton = "Submit";
        module.cancelButton = "Cancel";
        module.inputActionsPerSecond = 10;
        module.repeatDelay = 0.5f;
        module.forceModuleActive = false;

        return systemEventObject;
    }
}


그리고 캔버스

public GameObject makeCanvas() {
    GameObject canvasObject= new GameObject("Canvas");

    Canvas canvas = canvasObject.AddComponent<Canvas>();
    canvas.renderMode = RenderMode.WorldSpace;

    CanvasScaler scaler = canvasObject.AddComponent<CanvasScaler>();
    scaler.scaleFactor = 10.0f;
    scaler.dynamicPixelsPerUnit = 10.0f;

    GraphicRaycaster graphic = canvasObject.AddComponent<GraphicRaycaster>();

    canvasObject.GetComponent<RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 3.0f);
    canvasObject.GetComponent<RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 3.0f);

    return canvasObject;

}


일반적인 UI 요소를 만드는 방법

public GameObject makeBackground(GameObject canvasObject) {
    GameObject backgroundObject = new GameObject("Background");
    backgroundObject.AddComponent<CanvasRenderer>();

    Image image = backgroundObject.AddComponent<Image>();
    image.color = Color.green;

    backgroundObject.transform.SetParent(canvasObject.transform, false);

    return backgroundObject;
}

public GameObject makeLogo(GameObject parentObject) {
    GameObject logoObject = new GameObject("Logo");
    logoObject.AddComponent<CanvasRenderer>();

    Image image = logoObject.AddComponent<Image>();
    image.color = Color.red;

    logoObject.transform.SetParent(parentObject.transform, false);

    return logoObject;
}

public GameObject makeButton(String title, GameObject parentObject) {
    GameObject buttonObject = new GameObject(title + " Button");
    buttonObject.AddComponent<CanvasRenderer>();

    GameObject textObject = new GameObject("Text");
    textObject.AddComponent<CanvasRenderer>();

    Text text = textObject.AddComponent<Text>();
    text.text = title;

    textObject.transform.SetParent(buttonObject.transform, false);
    buttonObject.transform.SetParent(parentObject.transform, false);

    return buttonObject;
}


이제 Scene에 빈 GameObject를 만들고 이 GameObject에 Script 구성 요소를 추가합니다. 문제 없이 Sugar.cs에서 코드를 참조할 수 있습니다.

여기에서 갈 곳


  • Creating UI elements from scripting : 또 다른 방법은 요소를 쉽게 참조하고 구성하기 위해 C#에서 프리팹 및 ​​인스턴스화 기능을 사용하는 것입니다
  • .
  • 2D Game Creation : 2D 게임 제작을 위한 공식 Unity 튜토리얼입니다.

  • ❤️ 내 앱 지원 ❤️
  • Push Hero - pure Swift native macOS application to test push notifications
  • PastePal - Pasteboard, note and shortcut manager
  • Quick Check - smart todo manager
  • Alias - App and file shortcut manager
  • My other apps

  • ❤️❤️😇😍🤘❤️❤️

    좋은 웹페이지 즐겨찾기