비주얼 에디터를 최소한으로 사용하지 않고 Unity에서 게임을 빌드하려면 어떻게해야합니까?


24

C #으로 게임을 완전히 작성하고 싶습니다. 엔진을 검색 할 때 Unity3D를 찾았지만 모든 튜토리얼과 문서는 장면과 스크립트를 만들기 위해 클릭하고 둘러 보는 비주얼 편집기 및 Unity IDE에 대해 말하고 있습니다.

나는 그것을하고 싶지 않습니다. 나는 멀리있는 것을 추상화하는 디자이너보다 완전한 코드 적용을 선호합니다. 순수한 C # 코드를 처음부터 작성하거나 필요한 경우 Unity 스크립트를 추가로 작성하고 싶습니다. 그렇게하는 것에 대한 설명이나 문서를 찾을 수 없었습니다. Unity를 사용하여 비주얼 에디터를 최소화하거나 사용하지 않는 게임을 어떻게 만들 수 있습니까?


1
마지막으로, 이것은 Unity에 대한 질문으로 위장한 프레임 워크 권장 사항입니다.
BlueRaja-대니 Pflughoeft

2
커뮤니티의 찬성 투표를 뒤집지 않더라도 실제로 동의하는지 확실하지 않습니다. 그러나이 질문은 Unity의 일부 기능에 대해 구체적으로 묻는 것입니다. 의는하자 없는 우리가 좋아에없는 경우 주제 질문 떨어져에이 되나요?
Josh

2
대부분의 개발자는 시각적으로 물건을 배치하는 것이 코드에서 모든 작은 doodad의 위치를 ​​설정하는 것보다 훨씬 간단하기 때문에 어느 시점에서 레벨을 디자인하기 위해 시각적 편집기를 찾습니다. GUI 레이아웃을 편집 / 디자인 할 때도 마찬가지입니다. 이미 내장되어있는 것은 IMHO에게 큰 이점입니다.
bummzack

4
I prefer writing my own level editor which provides only the stuff really neccessary for my game기본적으로 게임 엔진을 사용하지 않고 그래픽 라이브러리를 사용하여 프로그래밍하고 싶다는 의미입니다. 그러나 당신은 그렇게하려고 할 때 이미 기술적 인 걸림돌을 쳤습니다. 그래서 나는 여기 모순을 느낍니다.
jhocking

3
@jhocking 그렇다면 게임 엔진의 정의는 매우 다른 것 같습니다. 클래스 라이브러리는 카메라 수학, 사운드 시스템 및 약간의 물리학 같은 일반적인 게임 작업을 추상화하는 경우 게임 엔진이지만, 디자이너는 요구 사항이 아니며 필자의 의견으로는 사용해서는 안됩니다 .
Ray

답변:


27

나는 Unity의 완전한 초보자이지만, 지금 당장하는 방법이며 편집기 사용을 최소로 줄입니다.

에디터에는 "main"이라는 빈 게임 오브젝트, 카메라, 라이트의 세 가지 오브젝트 만 있습니다. 그리고 이것은 지금까지 하나의 카메라와 하나의 조명으로 만 작업하기 때문에이 방법이 더 빠르기 때문입니다. 나중에 나는 아마도 그것들을 제거 할 것이고, "메인"만이 남을 것이다.

"Assets / MyScripts"에는 "Main"클래스가 있는데이 클래스는 "main"GameObject에 동작으로 추가됩니다. 즉, 프로그램이 시작되면 "Main"클래스가 인스턴스화되고 해당 메서드가 호출됩니다. "메인"클래스는 다음과 같습니다.

using UnityEngine;

public class Main : MonoBehaviour
{

    void Start ()
    {
        // initialize the game
    }

    void Update ()
    {
        // update physics
    }

}

게임에서 나는 다음과 같이 환경을 동적으로 구축합니다.

GameObject floor = GameObject.CreatePrimitive (PrimitiveType.Cube);
floor.renderer.material.color = RandomGreen ();

그러나 이것은 지금까지 프로토 타입 만 만들고 있기 때문입니다. 나중에 블렌더에서 편집 한 멋진 것들로 큐브를 바꾸고 싶습니다. 블렌더에서 만들고 "프리 팹"으로 유닛에 임포트해야합니다. 그런 다음 C # 코드에서 "프리 팹"을 비슷하게 인스턴스화합니다.

객체가 다른 객체와의 충돌과 같은 이벤트에 반응하게하려면 객체를 인스턴스화하고 동작 클래스 (MonoBehavior에서 파생 된 C # 클래스)를 동적으로 추가 할 수 있습니다. 예를 들어, 자동차를 갖고 싶다면 자동차 조립식을 만들고 게임에서의 해당 행동에 대한 "CarBehavior"클래스를 작성하십시오.

이 방법을 사용하면 편집기와의 상호 작용을 최소로 줄일 수 있지만 완전히 0이 아닐 수도 있습니다. 이제 이것이 적합한 솔루션인지 여부에 따라 다릅니다.


2
나는 이것이 Unity 초보자를위한 매우 명확하고 확실한 대답처럼 보입니다 :)
Ray

감사! 나는 그렇지 않으면 숙련 된 프로그래머이지만 이것이 Unity의 첫 프로젝트이며 아직 끝나지 않았습니다. 아직 프리 팹을 사용하지 않았습니다. 현재 알지 못하는 합병증이있을 수 있으므로 소금 한알로 조언을 얻는 것이 좋습니다. 그건 그렇고, Unity의 직렬화 는 약간 반 직관적입니다. 더 깊이 연구해야 할 것이며 일부 디자인 결정에 영향을 줄 수 있습니다.
Viliam Búr

9

Unity로 작업 할 때는 Unity 에디터 내에서 일부 작업을 수행해야합니다. 그것이 Unity의 작동 방식입니다.

그러나 광대 한 유니티의 편집기 내에서 발생하지 않는 프로그래머로 일을 할 것입니다 무엇의 대부분; 스크립트 파일은 외부 IDE로 작성된 외부 텍스트 파일이며, 프로그래머는 실행할 스크립트를 연결 한 다음 Play를 눌러 실제로 게임을 실행하기 위해 Unity 편집기 만 사용합니다. 프로젝트 설정에서 클래스로 링크 한 다음 IDE 내에서 Run을 누르는 것과 다릅니다.

중앙 비주얼 편집기가있는 대부분의 다른 게임 개발 도구도 제한적이고 융통성이없는 스크립팅 지원으로 안장되어 있지만 Unity는 이러한 단점을 겪지 않습니다. Unity 용으로 제작 된 모든 것이 궁극적으로 비주얼 편집기를 거치지 만이 핵심 인터페이스에는 Unity의 게임 엔진에서 실행되는 사용자 지정 코드에 프로젝트를 연결하는 작업이 많이 포함됩니다. 숙련 된 프로그래머,이 개발 환경을 무시하지 말고 제한된 프로그래밍 기능을 가진 클릭 투 게임 제작자에게 착각하십시오!

(또한 숙련 된 프로그래머를 대상으로하기 때문에 현재 쓰고있는 책이 여러분에게 큰 도움이 될 것 같습니다.)


1
이 답변을 보았을 때 책을 읽는 중이었습니다
max pleaner

6

나는 당신이 찾고있는 것이 Unity 용 Futile Framework 라고 생각합니다 .

기본적으로 시각적 편집기를 사용하여 물건을 "끌어다 놓기"하지 않고도 스크립트를 사용하여 모든 프로그래밍을 수행 할 수 있습니다. 씬에서 게임 오브젝트 하나만 있으면 전체 게임의 컨테이너가됩니다. 그런 다음 비 시각적 편집기를 사용하는 것처럼 모든 절차를 절차 적으로 수행합니다.

면책 조항 : Futile은 코드 중심적이지만 Unity 편집기를 어떤 방식 으로든 망쳐 놓아야한다는 것은 불가피합니다. 그러나 이것은 Futile로 크게 줄어 듭니다.


2

여기에 모든 좋은 답변, 특히 @jhocking의 답변을 추가하고 싶습니다.

Unity에서 찾은 거의 모든 것이 프로젝트 폴더 트리에 일반 텍스트로 표시됩니다. Unity를 열지 않고 프리 팹과 다른 게임 오브젝트를 직접 편집했으며 커밋시 다른 개발자가 변경 사항을 성공적으로 발견했습니다.

오늘까지 Futile Framework에 대해 많이 알지 못했지만 모든 것을 얻을 수있는 정말 멋진 방법으로 보입니다.

나는 현재 스크립트 기반으로 이동하는 대신 드래그 앤 드롭 방식을 사용하지만 목표는 절차 적으로 생성 된 레벨과 나쁜 녀석이 있기 때문에 변경해야합니다.

내 두 센트는 기본적으로 Unity에서 필요한 몇 가지 객체를 가져온 다음 외부 편집기의 스크립트에 의존한다고 말합니다. 거의 모든 것을 평문으로 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.