유니티 기초

유니티

다모아 2023. 7. 31. 17:57

라이프사이클 기술면접에서 가끔 나옴

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Cube : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(this); //cube클래스의 인스턴스
        Debug.Log(this.gameObject); //cube클래스의 인스턴스 ( 컴포넌트가 붙어있는 게임오브젝트 인스턴스)

        //내가 붙어있는 게임오브젝트의 특정 컴포넌트 인스턴스를 가져올 수 있음
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Cube : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //특정 게임오브젝트에 붙어있는 T타입의 컴포넌트 인스턴스를 가져온다
        BoxCollider collider = this.gameObject.GetComponent<BoxCollider>();
        Debug.Log(collider);

        //내가 붙어있는 게임오브젝트의 Transform 컴포넌트 인스턴스
        Transform trans = this.gameObject.GetComponent<Transform>();
        Debug.LogFormat("trans: {0}", trans);
        //this.gameObject.GetComponent<Transform>()랑
        //this.gameObject.transform랑
        //this.transform이 동일하다
        Debug.LogFormat("trans: {0}", this.gameObject.transform);
        Debug.LogFormat("trans: {0}", this.transform);


    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class App : MonoBehaviour
{
    public enum eAppType
    {
        Dev, Release
    }

    public string appName;
    public int appVersion;
    public float damage; //멤버변수가 인스펙터에 노출됨
    
    [SerializeField] //애트리뷰트를 사용하면 private멤버도 인스펙터에 노출된다.
    private bool isTest;

    [SerializeField]
    private eAppType appType;

    public GameObject go;

    public App app;
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(this.gameObject.GetComponent<Transform>().position);
        Debug.Log(this.gameObject.transform.position);
        Debug.Log(this.transform.position);
        Debug.Log(this.transform.position.x);
        Debug.Log(this.transform.position.y);
        Debug.Log(this.transform.position.z);
        Debug.Log(this.appName); //null
        Debug.Log(this.appVersion);
        Debug.Log(this.damage);
        Debug.Log(this.isTest);
        Debug.Log(go); //할당된 게임오브젝트의 인스턴스
        Debug.Log(app); //App컴포넌트의 인스턴스
        Debug.Log(this.gameObject == app.gameObject);
        Debug.Log(this == app);
        
        //리치텍스트
        Debug.LogFormat("<color=yellow>{0}</color>", this);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class App : MonoBehaviour
{
    public Hero hero;
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(hero); //Hero클래스의 인스턴스

        //다른 컴포넌트 인스턴스의 메서드를 호출
        hero.SayHello();
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

손으로 인스펙터로 Hero 안넣어도 코딩으로 넣기

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class App : MonoBehaviour
{
    public Hero hero;
    // Start is called before the first frame update
    void Start()
    {
        //활성화 되어있는 게임오브젝트를 찾을 수 있음
        GameObject go = GameObject.Find("Hero");
        Debug.Log(go);
        this.hero = go.GetComponent<Hero>();

        //타입으로 찾는 방법
        this.hero = GameObject.FindObjectOfType<Hero>();
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}