재미있는 실감미디어

꿈꾸는대로 만들어집니다.

유니티기초[유니티 기초] 14_유니티프로그래밍기본_C#프로그래밍기초2_연산자

김혜영
2020-04-04
조회수 683

유튜브 14 - https://youtu.be/-vA9570ebpc

* 오늘의 배울 내용

  • C#을 사용하는 이유
  • C# 스크립트 파일 생성
  • 스크립트 인스턴스화
  • 연산자

오늘은 프로그래밍 기초 2번째 시간입니다. 간단히 C#을 사용하는 이유와 인스턴스화의 개념을 살펴보고 다양한 연산자를 살펴보도록 합니다. 


저는 이 3가지 책을 참고하여 공부하고, 강의 자료를 만들고 있습니다. 특히 스크립트를 나가는 부분은 “유니티 C# 스크립팅 마스터하기”를 주로 다루고 있습니다. 모든 책이 좋지만 “유니티 C# 스크립팅 마스터하기”의 경우 스크립트를 좀더 깊게 다룰 수 있어 좋은 느낌입니다. 책을 참고하되, 제가 정리하고 첨삭하여 강의를 만들었으니 책도 참고하시면 좋을 듯 합니다. 


여기 이 세상에 사용 되는 많은 언어들이 있습니다. 자바가 압도적이네요. 제가 여기서 아는 사용할 줄 아는 언어는 Javascript, 그리고 C# 정도 되겠습니다. C#은 생각보다 작네요. 들어본 언어는 많습니다. 정말 자바가 대세이긴 한 듯 합니다. 


여기 유니티에서 사용할 수 있는 언어가 있습니다. BOO는 생소한데, 잘 사용 되지 않는것 같습니다. 귀엽긴 한데 이 아이는 일단 생각하지 않겠습니다. 유니티는 자바스크립트로도 개발할 수 있지만 C#을 좀더 적극적으로 권장합니다. 유니티에서 가장 널리 사용되며 지원받는 언어이고, 개발자들이 많이 사용하는것도 이유입니다. 또한 기존 만들어진 자료들도 C# 이 많습니다. 지난 시간에 우리가 변수를 만드는 법을 살펴보았습니다. 자바스크립트에서는 변수 타입을 지정하지 않고도 선언할 수 있습니다. 하지만  C#의 경우 꼭 변수 타입을 지정해야 합니다. 이러한 성격으로 인해 C#이 자바스크립트보다 훨씬 가볍습니다. 자바스크립트의 경우 형을 지정하지 않아 개발자는 편하지만 내부적으로는 데이터 타입을 찾는 시간이 걸리게 됩니다. 이런 이유로 C#이 가볍고, 에러도 훨씬 적게 나게 됩니다. 또 현업에서 개발자들이 C#을 많이 사용하니 대세를 따라가는게 좋을 듯 합니다. 우리도 그래서 C# 으로 공부합니다. ^^


유니티에서 스크립트 파일 생성은 이제 어렵지 않을 것입니다. 스크립트 파일 이름은 영문자나 _밑줄로만 시작해야 하며, 공백은 포함할 수 없습니다. 실제로 숫자로 시작하는 파일 이름을 만들게 되면 콘솔창에 에러가 출력됩니다.


유니티의 스크립트 파일은 씬에 추가하기 전까지는 비활성 존재이며, 이 스크립트 파일을 특정 오브젝트에 컴포넌트로 추가하는 과정을 통해 사용할 수 있게 되며, 이 과정을 “인스턴스화” 라고 합니다. 스크립트는 컴포넌트 형태로 인스턴스화되어 스크립트 내 public으로 선언된 변수들이 오브젝트의 인스펙터창에 나타납니다. public 변수는 유니티의 오브젝트 인스펙터에서 접근과 편집이 가능하며, 다른 클래스에서도 접근이 가능하게 됩니다.


스크립트를 보면 이러한 비교연산자를 만나게 됩니다. 사실 자바스크립트 경험이 있는 분들은 무척 쉬울 것입니다. 쭉~ 읽어보세요. 어렵지 않죠? 익숙해지면 됩니다. 이러한 연산자를 어떻게 사용하는지 사례를 통해 경험하면 됩니다. 여기서 참이란 true 값을 반환하게 되는 것을 말합니다. 무슨 말인지 모르겠다면 실습을 해보면 됩니다. ^^


자, 코드를 통해 결과를 확인합니다. 쉽지 않나요? 

// using 키워드를 이용하여 사용할 라이브러리를 지정

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class NewBehaviourScript : MonoBehaviour

{

    public int Num1 = 10;

    public int Num2 = 20;


    void Start()

    {

        Debug.Log(Num1 < Num2); // 참 true

        Debug.Log(Num1 <= Num2); // 참 true

        Debug.Log(Num1 > Num2); //거짓 false

        Debug.Log(Num1 >= Num2); //거짓 false

        Debug.Log(Num1 == Num2); //거짓 false

        Debug.Log(Num1 != Num2);  // 참 true

    }

}


이번에는 논리 연산자를 살펴보도록 합니다. 실습을 하여 볼까요?


당장은 이 부분이 게임 제작시 어떻게 쓰일지 감이 안올수도 있습니다. 그러나 일단 이러한 개념을 익히도록 합니다. 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class NewBehaviourScript : MonoBehaviour

{

    void Start()

    {

        Debug.Log(3<5 && 5<7); // true

        Debug.Log(3>5 && 5<7); // false

        Debug.Log(3>5 || 5<7); // true

        Debug.Log(3>5 || 5>7); // false

        Debug.Log(!(3<5)); // false

        Debug.Log(!(3>5)); // true

    }

}


가장 쉬운 산술 연산자도 있습니다.

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class NewBehaviourScript : MonoBehaviour

{

    void Start()

    {

        Debug.Log(3+4); // 7

        Debug.Log(6-4); // 2

        Debug.Log(6-8); // -2

        Debug.Log(3*2); // 6

        Debug.Log(6/2); // 3

        Debug.Log(5%2); // 1

    }

}


이외에도 아주 많은 다양한 연산자들이 있습니다. 앞으로 필요할 때 잘 모르겠으면 여기를 참고하시면 됩니다. 

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/addition-operator


오늘은 게임 제작시 가장 기본적으로 필요한 연산자를 살펴보았습니다. 사실 자바스크립트랑 별 차이가 없습니다. 그런데 이런 공부는 조금 지루합니다. 그래도 이걸 견뎌내야 합니다. 그래야 나중에 날라다니며 코딩을 할 수 있습니다. ^^ 자신이 생각한것을 코딩으로 구현하는 그 느낌. 엄청 짜릿합니다. 그 경험이 많을 수록 지루한 문법을 견뎌낼 수 있습니다. 하지만 처음 하는 사람은 엄청 힘듭니다. 지루합니다. 그런 분들은 일단 뒤에 나오는 실습부터 해봅니다. 그럼 뇌가 이런 생각을 합니다. 아…. 기초를 배워야 겠구나…. 깨닫습니다. 뇌가. 그럼 이런 기초가 그리 지루하지 않게 공부할 수 있습니다. 왜요? 필요함을 아니까요. 저야.. 100개 준비하기로 했으니 시나브로 준비합니다만.. 정 힘들면 뒤에 제작하는 부분을 먼저 보세요~ 그리고 다시 돌아오셔도 됩니다. ^^  그럼 다음 시간에 만나요~ 안녕~



1 0

매일 한알의 마늘처럼 하나의 미션 수행!

동굴뛰쳐나가지 않고 매일 하나의 마늘을 먹기!!!

게임이나 VR, AR 에 유니티가 언리얼과 같이 많이 사용된다고 듣긴 했지만 나와는 관계없는 프로그램 같았습니다. 그러다가 우연한 계기로 게임 디자인을 하면서 유니티에 관심이 생겼습니다. 


자바스크립트가 유니티와 연동된다고 하니, 유니티가 매력있게 다가왔습니다. 유니티까지 활용한다면 작업 영역의 확장 뿐만 아니라 재미있는 콘텐츠를 제작할수 있겠다는 가능성이 보였습니다.


내가 기획하고, 디자인하고, 개발까지 하여 하나의 게임 앱을 만들수가 있다니! 얼마나 달콤한 유혹인지 모릅니다. 물론 수 많은 산을 넘고 에러를 넘고, 오류를 넘어야 하는 것은 각오를 해야 합니다. 그럼에도 불구하고 무척 매력적 입니다. 인고의 시간을 지나면 나는 상상력을 구현할수 있는 하나의 툴을, 도구를 장착할수 있는 것입니다. 아!이!언!맨! 처럼 말이지요!!!


카카오프로젝트 100은 게으른 저를 동기부여해 줍니다. 당장 통장에 계좌가 찍히는 일은 열심히 하게 되지만, 새로운것을 공부할 때는 의지가 참 약해지고 용두사미가 됩니다. 그런 의미에서 카카오프로젝트 100은 100일동안 의지를 불태울수 있는 작은 동기가 됩니다. 카카오프로젝트 시즌1에서는 자바스크립트 기초를 정리했습니다. 

시즌 2에서는 새로운 공부를 도전합니다. 바로 유!니!티!


여러분 생각은 어떤가요?

top