함수 한번만 실행 & 컴포넌트로 스크립트를 불러와야하는 이유

정제로·2023년 8월 8일
0

Unity

목록 보기
3/19

어제 깃 풀을 했다가 전부다 날려먹었다.. 오늘은 아침부터 일정이 있어 지각을 할 예정이라 미리 새벽부터 일어나서 다시 pull받은다음 push를 마쳤다..
난 아침형 인간인가?ㅋㅋ


update/fixedupdate에서 한번만 함수를 사용하는법

난 코루틴을 사용할 줄 모르니 야매로 내가 찾은 방법을 알려주도록 하겠다.

// 일단 update문이나 fixedupdate문에서 if문이 사용될때의 얘기이다.
//미리 bool값을 만들어 놓는다

.....

bool IsTrue = true;

....

void Update()
{
.......
	if (time < 5 && IsTrue)
    {
    	//실행될 코드들
        
        //실행된 후 IsTrue를 false로 바꿔주면 1회성으로 사용가능하다
        IsTrue = false;
 	}
.......
}

이런 방법 외에도 코루틴이나 다른 방법들이 많이 존재하지만, 
이 방법이 초보, 그리고 규모가 크지않은 프로젝트에서는 효과적으로 먹힐 방법인것 같다

다른 스크립트에서 함수를 불러올때 사용하는 기술

일단 내가 어떤 방향으로 기능을 구현하려 했는지 설명하겠다

  1. 시간이 급박할때 배경이 빨간색과 파란색을 왔다갔다하며 위험하다는 신호를 주기

  2. 그래서 애니메이터를 만들어 카메라에 넣고 녹화기능으로 카메라 백그라운드 애니메이션을 만듬

  3. 그 애니메이션을 사용하기위해 파라미터 bool값을 만든후 언제든지 그 애니메이션에 닿을수있게 anystate에서 연결

  4. 이후 애니메이션 사용을 위해 camera.cs를 생성후 메인카메라에 컴포넌트 삽입

  5. 아래와 같은 코드를 만듬

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

public class camera : MonoBehaviour
{
    public Animator animator;

    void Start()
    {
        animator = GetComponent<Animator>();
    }

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

    }

    public void ChangeBack()
    {
        animator.SetBool("IsTime", true);
        Debug.Log("안됨");
    }

    public void NotChange()
    {
        animator.SetBool("IsTime", false);
        
    }
}
  1. 이후에 게임매니저에서 불러오기 위해 게임매니저에 public object 카메라를 만든 후 해당 값으로 메인카메라를 넣어줌

  2. 그러고 changeback이라는 함수를 사용하기위해 게임매니저에서 사용하려는데 없는 값이라고 나옴..

  3. 팀원분들과 30분넘게 고민해봤지만 답을 알 수 없어, 튜터님께 찾아감

  4. 튜터님 왈
    "아~ 그거 그러면 안되고, 지금 메인카메라 인스펙터창에 여러가지 보이시죠? 저기에서 camera.cs라는 파일내에있는 changeback이라는 함수에 접근해야 하는거잖아요? 지금 게임매니저라는 오브젝트가 camera라는 cs파일을 가지고 있지 않아서 불러올수가 없는거거든요? 그래서 저 camera.cs컴포넌트를 불러온다음, 거기에서 changeback함수를 가져와줘야해요~"

  5. 그래서 알게된 사실은 아래의 코드와 같다

camera.GetComponent<camera>().NotChange();

카메라라는 오브젝트는 이미 게임매니저에 들어가 있으니,
그 카메라의 컴포넌트중 camera(cs)라는 파일을 불러오고, 거기에서 notchange, changeback이라는 함수를 불러와야한다!
holy shit~~

염예찬 튜터님 감사합니다!!!


button컴포넌트 target graphic 확인하기!

게임을 오류중에 버튼2를 눌렀는데 버튼1에 클릭이펙트가 생기면서 버튼2의 효과가 생기는 오류가 있었다.

target graphic이 전부 버튼1로 가있었다.
전부 알맞게 바꿔주니 그 버튼에 알맞게 효과적용 됨!

profile
초보자입니다.. 잘못된 정보, 달게 받겠습니다..

1개의 댓글

comment-user-thumbnail
2023년 8월 9일

개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.

답글 달기