오브젝트
자기 자신을 스스로 챙길 수 있다.
하나의 온전한 단위로 존재한다.
실존하는 세상에 산다.
하나의 원본에서 파생 되어도, 서로 구분 가능하다.
클래스
이상적인 세계에 존재하는 단 하나의 기준
실제로는 존재하지 않는다.
가장 중요한 특성만 개략적으로 알려준다.
구체적인 수치가 없다.
private : 외부에서 class에 접근이 불가능하게 한다.
class의 멤버변수 혹은 멤버함수는 기본적으로 private처리가 되어있다.
public : 접근지정자, 유니티 에디터 혹은 class외부에서 접근이 가능하도록 한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HelloClass : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Animal jack = new Animal(); // 객체 생성
jack.name = "JACK";
jack.sound = "Bark";
jack.weight = 4.5f;
Animal nate = new Animal();
nate.name = "NATE";
nate.sound = "Nyan";
nate.weight = 1.2f;
Animal annie = new Animal();
annie.name = "ANNIE";
annie.sound = "Wee";
annie.weight = 0.8f;
nate = jack;
nate.name = "JIMMY";
nate.sound = "Cheese";
Debug.Log(jack.name);
Debug.Log(jack.sound);
Debug.Log(nate.name);
Debug.Log(nate.sound);
Debug.Log(annie.name);
Debug.Log(annie.sound);
}
}
public class Animal
{
public string name;
public string sound;
public float weight;
}
위 코드 nate = jack;
Call by reference, 가져와서 쓴다는 개념
직관적으로 nate에 jack의 정보가 단순 복사되지 않는다.
nate가 가진 정보가 사라지게 된다.
즉 JACK를 가리키는 변수는 jack와 nate 두개가 된다.
nate는 Garbage Collection이 되어 사라진다.
변수는 단지 가리키는 화살표
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Jumper : MonoBehaviour
{
public Rigidbody rb; // 실제 에디터에 오브젝트의 리지드바디를 가리키는 참조자
void Start()
{
rb.AddForce(0, 500, 0);
}
}