티스토리 뷰
안녕하세요. Base Of Coding입니다.
이전 강의에선 배열에 대해서 알아봤습니다. 왠지 배열전의 글에선 좀 어렵게 설명한 것 같아 맘에 걸려서
배열 이후부터는 조금 쉽게 설명하면서, 알아가실 수 있도록 쉽게 설명을 한 번 더 첨부해보려고 합니다..
배우시는 분 입장에서 쉽게 설명한다고 한 것 같은데.. 어렵게 느껴지실 수도 있겠구나 라고 생각이 드네요ㅠㅠ 죄송합니다.
이전까지의 강의 목록을 밑에서 보실 수 있습니다^^
자 그럼 함수에 대해서 알아보도록 하겠습니다.
1. 함수?? 그게 뭐지?
- 프로그래밍 관점에서의 함수로 말하자면, 하나의 기능들을 하나에 묶어 놓은 것이라고 생각하시면 편할 것 같습니다.
더 쉽게 말하자면, 메모장 프로그램에 대해서 예를 들어보겠습니다.
메모장을 실행하게 되면, 각각의 기능들이 있습니다. 새로 만들기, 파일 저장, 다른 이름으로 저장, 닫기, 열기 등등.. 여러가지의 기능들이 따로따로 있습니다.
자 그러면, 새로 만들기를 누르게 되면, 어떻게 되나요? 글이 입력되어 있었다면, 저장을 안하고 새로 만들거냐는 말을 묻고 저장하지 않는다고 클릭을 하면 새로 만들게 됩니다.
새로 만들기를 눌렀다는 가정하에 대화내용입니다.
저장 비교 : 자 기다려봐~ 저장했는 지 안 했는 지 한번 확인해볼게~ ( 0.0001초 후 ) 응 저장하지 않았네, 자 글자 비교해봐
글자 비교 : 어~ 글자도 있는 지 비교를 해볼까? ( 0.0001초 후 ) 어! 글자가 한 글자가 있어. 자 그럼 이제 너가 사용자한테 저장할 건지 물어봐
사용자 다이얼로그 : 음 잠깐만 다이얼로그 좀 만들어서 띄워야되니깐~ ( 0.0001초 후 ) 자 사용자님 저장할까요? 말까요? 클릭해주세요.
이런식으로 하나하나 보이진 않습니다. 그냥 새로 만들기는 새로 만들기 버튼일 뿐이니깐요.
아직도 이해가 가시지 않는다면, 천천히 그럼 알아보도록 하죠. 코드를 보면 이 말이 무슨 말인 지를 아실 수가 있습니다.
2. 함수의 기본
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /* * Code Design Develop. Base Of Coding * https://includecoding.tistory.com/ */ using UnityEngine; /// <summary> /// 함수 예제 첫 번째 /// </summary> public class FuncTest : MonoBehaviour { private void Start() { BaseFunc(); } /// <summary> /// 함수를 만들었습니다. /// </summary> private void BaseFunc() { Debug.Log("이것이 함수의 기본입니다."); } } |
- 자 코드를 한 번 풀이해보겠습니다.
1. Start 함수에선, BaseFunc()라는 함수를 호출합니다. 함수를 사용한다는 말을 함수를 호출한다고도 많이 말하십니다.
2. 자 그러면, 호출한 함수로 넘어가볼까요? 22번째 줄에 private void BaseFunc라는 함수가 있네요.
3. 이 함수를 보니, 디버그 로그 함수가 있습니다. 이것이 함수의 기본입니다. 라는 것을 출력하게 만들어주네요.
4. 유니티에서 실행을 해보니, 이것이 함수의 기본입니다. 라는 문자열이 출력이 됩니다.
자 한 마디로, BaseFunc()는 디버그 로그로 이것이 함수의 기본입니다. 라는 것을 출력하게 만드는 기능이다!라고 생각하시면 됩니다.
여기서, 아니 왜 이 한 줄 실행하려고 3줄이나 적어야 되요?라고 하실 수 있습니다. 물론 이렇게는 함수를 사용하지 않습니다ㅎㅎ
천천히 알아볼까요??
3. 함수를 사용하는 이유!
1. 함수를 이용하여, 기능을 이용하는 여러 줄의 코드를 하나의 함수로 묶어서 사용한다.
2. 함수를 이용해서, 값을 받아올 수가 있다.
- void, int, string, float, long과 같은 자료형이 있습니다. 자료형을 잘 모르신다면, 2장인 변수란 무엇인가?를 참고해주시길 바랍니다.
자, 그러면 함수 원형인, void BaseFunc() 이란 함수가 있었습니다. 이 함수의 뜻은, BaseFunc() 이란 이름을 가진 함수야! 하지만 내가 돌려보낼 값은 void형이니깐
return 할 것이 하나도 없어 그냥 안에 있는 코드들만 실행해주면 돼! 라는 뜻을 가지고 있습니다.
- 그럼 int BaseFunc() 라는 함수는 무엇일까요? 이 함수의 뜻은, 난 BaseFunc()라는 이름을 가진 함수야! 내가 돌려보낼 값은 int형인데, 안에 있는 함수를 실행한 뒤에 int값을 돌려보내줘! 라는 뜻을 가지고 있습니다. 그럼 한 번 코드로 살펴보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | /* * Code Design Develop. Base Of Coding * https://includecoding.tistory.com/ */ using UnityEngine; /// <summary> /// 함수 자료형 리턴 예제 /// </summary> public class FuncTest : MonoBehaviour { private void Start() { int i = IntegerFunc(); string s = StringFunc(); float f = FloatFunc(); Debug.Log(i + " : " + s + " : " + f); } // int형을 리턴하는 함수입니다. private int IntegerFunc() { int integer = 5 + 4; return integer; } // string형을 리턴하는 함수입니다. private string StringFunc() { string str = "안녕하세요"; return str; } // float형을 리턴하는 함수입니다. private float FloatFunc() { float flo = 3.14f; return flo; } } |
함수를 각각 자료형에 맞게 리턴하는 형식으로 만들어놨습니다.
IntegerFunc에는, 5+4인 값인 9를 가지고 있는 int integer 변수를 리턴하고,
StringFunc에는, 안녕하세요라는 문자열을 가지고 있는 string str 변수를 리턴하고,
FloatFunc에는, 3.14라는 실수를 가지고 있는 float flo 변수를 리턴합니다.
그 리턴한 값을, int i와 string s, float f라는 값이 각각 리턴 타입에 맞게 가지고 있는 것을 Start 함수에서 보실 수가 있습니다.
그렇게 i,s,f 값을 디버그를 이용해서 출력해보면, 9 : 안녕하세요 : 3.14라는 값이 출력이 되게 됩니다. 이 것이 바로, 함수를 이용해서 값을 받아오는 방식입니다.
또한 각각의 함수에 변수를 이용하지 않고, return 9; , return "안녕하세요"; , return 3.14f; 이런 식으로 리턴을 해도 상관 없습니다.
3. 매개변수를 이용하여 그 값을 사용 또는 바꿀 수가 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | /* * Code Design Develop. Base Of Coding * https://includecoding.tistory.com/ */ using UnityEngine; /// <summary> /// 함수 매개변수 예제 /// </summary> public class FuncTest : MonoBehaviour { private int changeVariable = 0; private void Start() { // 1. Debug.Log(changeVariable); // 0이 출력이 됩니다. // 2. ChangeFunc(10); // 10이란 값을 매개변수에 보냈습니다. Debug.Log(changeVariable); // 10이란 값이 출력이 됩니다. // 3. ChangeFunc(15); // 15란 값을 매개변수에 보냈습니다. Debug.Log(changeVariable); // 15란 값이 출력이 됩니다. } private void ChangeFunc(int variable) { changeVariable = variable; } } |
전역변수로 changeVariable이란, 변수를 하나 만들었고, 0으로 초기화를 했습니다. 물론 0을 붙이지 않아도 전역변수는 알아서 0으로 초기화를 시켜줍니다.
그리고, Start 함수를 한 번 살펴보겠습니다. 제일 처음에, changeVariable에 있는 값을 출력하면, 0이 출력이 될 것 입니다.
그리고, ChangeFunc라는 함수를 실행하는 데 10이란 값을 보내네요? 함수를 살펴보면, int variable이란 매개변수가 있습니다.
그 매개변수에 저장 된 값을 changeVariable에 대입을 해줍니다. 그리고, Start 함수에서, 현재 changeVariable의 값을 출력해보네요. 그럼 10이 출력 될 것이고,
똑같은 방식으로 15란 값을 보내면서 호출합니다.그리고 또 출력해보면 보낸 값인 15가 출력이 됩니다.
매개변수로, 전역변수에 있는 값을 변경시킬 수도 있습니다. 지역변수를 쓸 수 없는 이유는, 지역변수는 해당 함수에서만 사용이 가능하기 때문입니다.
모르고 넘어가셔도 됩니다. 전역변수와 지역변수 또한 강의 내용에 포함되어 있습니다.
4. 쉽게 풀이를 해봅시다.
'게임 프로그래밍 ( 이제 안함 ) > 유니티로 배우는 C#' 카테고리의 다른 글
유니티로 배우는 C# - 11. 제네릭 컬렉션 (0) | 2019.04.17 |
---|---|
유니티로 배우는 C# - 10. 접근자와 지역 / 전역 변수? (1) | 2019.01.30 |
유니티로 배우는 C# - 8. 배열 (0) | 2019.01.18 |
유니티로 배우는 C# - 7. 반복문(2) while문 (0) | 2018.10.17 |
유니티로 배우는 C# - 6. 반복문(1) for문 (0) | 2018.09.11 |
- Total
- Today
- Yesterday
- 유니티로 배우는 C#
- 프리젠테이션 로직
- 안드로이드
- Spring
- 뷰포리아
- Java
- Git
- HTML
- Servlet
- 서블릿
- c#
- VR
- 유니티3D
- MVC
- Vuforia
- GitHub
- Unity
- CSS
- Controller
- unity3d
- baseofcoding
- 게임프로그래밍
- 유니티
- JSP
- Base Of Coding
- 비지니스 로직
- 스프링
- spring boot
- Next.js
- 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |