Machineboy空

Unity 콘솔, OOP에 관련하여 본문

Game/Unity

Unity 콘솔, OOP에 관련하여

안녕도라 2024. 9. 27. 20:09

콘솔(Console)이란?

개발자와 컴퓨터가 텍스트를 통해 대화하는 공간.

Debug.Log("Hello World!");

 

using UnityEngine; 라이브러리 안에 들어있는 Debug.Log


객체지향프로그래밍(OOP, Object Oriented Programming)

1) 추상성과 Idea

 

매킨토시를 활용해 GUI(Graphic User Interface)를 세상에 처음 공개했던 스티브잡스

컴퓨터는 사람의 사고방식을 반영하는 기계가 되어야 한다.
컴퓨터는 사람의 방식을 반영하는 거울과 같아져야 한다.

 

현대 프로그래밍 언어들은 사람의 사고방식을 반영하는 것에 초점이 맞춰져 있다.

이것을 '추상성'이라고 한다.

 

OOP를 이해하려면, 컴퓨터처럼 사고하려고 하면 안된다.

 

고대 그리스 플라톤 idea로 부터 비롯되었다.

목수가 책상을 만들 때는 목수의 머릿속에는 가장 이상적인 책상이 하나 존재한다.
목수가 현실에서 책상을 만들 때는 그 이상적인 세계의 책상을 본따서 만든다.
현실의 책상은 서로 소재가 다를 수도 있고 길이가 다를 수 도 있다. 

 

이상적 세계의 책상 = idea, 이상적 세계에 존재하는 완벽한 원본

현실 세계의 책상 = replica, 이상적 세계의 책상을 복제한 것들 -> Class Object의 원형이라고 할 수 있다.

 

우리가 사과를 인식할 수 있는 이유?

 

머릿속에 추상적이고 이상적인 사과라는 개념이 있기 때문이다.

그 이상적인 사과에 빗대여 현실의 사과들을 인식하는 것이다.

 

현실의 사과들은 색이 좀 더 탁하거나 길이가 좀 더 뭉툭할 수 있다.

 

사과들을 뭉뚱그려서(추상화해서) 머릿속에 개략적으로 집어넣어 이해한다.

 


2) Class 와 Object

자동차의 설계도와 실제로 찍어낸 자동차들

 

Class는 개략적이고 추상적인 내부에 무언가 없는 원형이다.

그것을 실존 세계에 가져와서 찍어내서(Instance화) object들을 만들어냄!

 

class에서 파생된 object들은 서로 독립적인 존재이다! rob이 죽었다고 해서 나머지 개들에게 영향을 주지 않는다.

 


MonoBehaviour

Unity가 제공하는 기초적인 기능을 미리 만들어서 제공하는 Class


 

using System.Collections;
using System;
using UnityEngine;

public class HelloClass: MonoBehaviour {
	void Start() {
    	Animal jack = new Animal();
        jack.name = "JACK";
        jack.sound = "Bark";
        jack.weight = 4.5f;
        
        Animal jack = new Animal();
        jack.name = "NATE";
        jack.sound = "Nyaa";
        jack.weight = 1.2f;
        
        Animal jack = new Animal();
        jack.name = "ANNIE";
        jack.sound = "Wee";
        jack.weight = 0.8f;
        
        nate = jack;
        
        Debug.Log(jack.name);
        Debug.Log(jack.sound);
    }
}

public class Animal {
	public string name;
    public string sound;
    public float weight;
}

 


Call by Reference vs Call by Value

미리 만들어진 component를 가져와서 쓰기 위해서 존재하는 call by reference

public class Jumper: MonoBehavior {
	public Rigidbody rb;
    
    void Start(){
    	rb.AddForce(0,1000,0);	// 실제 붙어있는 rb를 가져와서 수정
    }
    
    void Update() {
    	
    }
}

 

https://penjee.com

 

Learn Python with Penjee. Your kids will be typing their first hand-written code in no time!

Welcome to Penjee! Penjee is a place where you can learn how to code with the python language. Start right away with our tutorial! Start basic training Alternatively, you can skip the tutorial and create your account now.

penjee.com

 

Garbage Collections

 

 

 

'Game > Unity' 카테고리의 다른 글

Unity 최적화 관련  (1) 2024.09.27
iOS + Unity 관련 자료 모음  (0) 2024.09.26
Unity Burst란  (0) 2024.09.26
Unity Nav Mesh  (0) 2024.09.25
멀티플레이 구현: Photon Pun 유니티 기초 세팅 및 RPC 개념  (1) 2024.09.10