개발/유니티(UNITY)

2.7 메서드 만들기

새벽감성개발자 2023. 9. 8. 13:00
반응형

※ 지금까지는 Start() 메서드 안에 모든 처리를 작성했지만, 모아둔 처리마다 이름을 붙여서 재사용 할 수 있게 할 것이다.

2.7.1 메서드

  • 메서드(method) : 의미가 있는 처리 블록으로 분해하고 이름을 붙이는 구조에서 각 처리를 메서드라고 한다
  • 인수 : 메서드(method)로 건네는 값
  • 반환값 : 메서드(method)에서 돌려받는 값
  • 인수는 여러개 건넬 수 있지만, 반환값은 1개만 받을 수 있다.
    • 이 반환값을 여러개로 받고 싶다면 배열로 받아서 값을 처리하면 된다.

 

2.7.2 메서드를 만드는 방법

※ Add() 메서드의 예시

using System.Collections;
using System.Collections.Generic;
using UnityEngine;                  // 유니티가 동작하는데 필요한 기능 제공
using UnityEngine.UIElements;

public class test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        int answer;
        answer = Add(3, 4);
        Debug.Log(answer);
    }

    int Add(int num1, int num2)
    {
        int sum = num1 + num2;
        return sum;
    }
}
  • Add() 메서드를 선언하고, 어떤 값을 리턴 할지 코드 상에서 작성해줘야 한다.
  • 선언되지 않은 메서드를 사용 할 수 없다.
  • 메서드 호출방법 Add(숫자, 숫자) 로 사용하면 각 값이 더해져서 sum의 값이 answer에 들어가게 된다.

결과값 보기

 

2.7.3 인수도 반환값도 없는 메서드

※ Console 창에 Hello를 출력하는 메서드

using System.Collections;
using System.Collections.Generic;
using UnityEngine;                  // 유니티가 동작하는데 필요한 기능 제공
using UnityEngine.UIElements;

public class test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        SayHello();
    }

    void SayHello()
    {
        Debug.Log("Hello");
    }
}
  • void 로 메서드를 선언하면 반환 값이 없이, 그냥 동작하고 동작이 완료되면 종료된다.

위 코드의 흐름도이다

  • 작성한 메서드를 호출해서 사용한다

 

2.7.4 인수가 있는 메서드

※ 인수를 출력하는 메서드

using System.Collections;
using System.Collections.Generic;
using UnityEngine;                  // 유니티가 동작하는데 필요한 기능 제공
using UnityEngine.UIElements;

public class test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        CallName("Dawn");
    }

    void CallName(string name)
    {
        Debug.Log("Hello " + name);
    }
}

결과값 보기

더보기

Hello Dawn

인수는 string으로 선언되었지만, 인수의 값을 넣지 않고 CallName()으로 호출하면, 인수값이 전달되지 않았기 때문에
오류가 발생한다.

 

2.7.5 인수와 반환값이 있는 메서드

※ 값을 두 개 받아 합계를 반환하는 메서드

using System.Collections;
using System.Collections.Generic;
using UnityEngine;                  // 유니티가 동작하는데 필요한 기능 제공
using UnityEngine.UIElements;

public class test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(Add(2, 3));
    }

    int Add(int num1, int num2)
    {
        int sum;
        sum = num1 + num2;
        return sum;
    }
}

결과값 보기

  • 어떠한 처리를 추가적으로 하지 않기 때문에 console창에 찍기 때문에 코드 간결화를 위해서 한꺼번에 넣음
  • num1 과 num2  변수에는 메서드를 호출하는 곳에서 지정한 순서대로 값이 대입
  • 메서드를 실행한 후에는 메서드의 호출 부분이 반환값으로 바뀌는 형태

 

 

한번 해보기 : 문제를 하나 내 드리겠습니다. 풀어보시고, 제가 작성한 코드와 비교해보시기 바랍니다.

i. 인자 3개를 받는 메서드를 만들고, 그 메서드는 3개의 인자를 더해서 그 결과를 반환시키는 메서드

코드 보기

더보기

using System.Collections;
using System.Collections.Generic;
using UnityEngine;                  // 유니티가 동작하는데 필요한 기능 제공

public class test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        int answer = 0;
        answer = Add(2, 3, 5);
        Debug.Log(answer); 

        // 결과 값 : 10
    }

    int Add(int num1, int num2, int num3)
    {
        int sum;
        sum = num1 + num2 + num3;
        return sum;
    }
}

ii. 인자 5개를 받아 그 값의 평균을 내서 반환하는 메서드

코드 보기

더보기

using System.Collections;
using System.Collections.Generic;
using UnityEngine;                  // 유니티가 동작하는데 필요한 기능 제공

public class test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        float answer = 0;
        answer = NumAverge(45, 61, 73, 19, 83);
        Debug.Log(answer);
        // 결과 값 : 56.2
    }

    float NumAverge(int num1, int num2, int num3, int num4, int num5)
    {
        int sum = num1 + num2 + num3 + num4 + num5;
        float avg = 1.0f * sum / 5;
        return avg;
    }
}

iii. 배열 길이 4짜리 array 변수를 선언하고, 배열의 각 값 중 10보다 큰 값만 더한 값을 반환해주는 메서드 OverTenSum()을 구현하시오

※ 기본 코드를 제공합니다. 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;                  // 유니티가 동작하는데 필요한 기능 제공
using UnityEngine.UIElements;

public class test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        int[] array = {11, 4, 69, 1};
        int result = OverTenSum(array);
        Debug.Log(result);
    }

    int OverTenSum(int[] array)
    {
        
    }
}

코드 보기

더보기

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

public class test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        int[] array = {11, 4, 69, 1};
        int result = OverTenSum(array);
        Debug.Log(result); 
        // 결과값 : 80
    }

    int OverTenSum(int[] array)
    {
        int sum = 0;
        for (int i = 0; i < array.Length; i++)
        { 
            if (array[i] >= 10)
            {
                sum += array[i];
            }
        }
        return sum;
    }
}

 

반응형

'개발 > 유니티(UNITY)' 카테고리의 다른 글

2.9 Vector 클래스 사용하기  (0) 2023.09.09
2.8 클래스 만들기  (0) 2023.09.08
2.6 배열 사용하기  (0) 2023.09.08
2.5.5 for 문으로 반복하기  (0) 2023.09.07
2.5 제어문 사용하기  (0) 2023.09.07