[C++] μ—°μ‚°μž μ˜€λ²„λ‘œλ”©(Operator Overloading)
Β·
πŸ“ Language/✏ C & C++
μ—°μ‚°μž μ˜€λ²„λ‘œλ”©(Operator Overloading) κΈ°μ‘΄ μ œκ³΅ν•˜κ³  μžˆλŠ” μ—°μ‚°μžλ₯Ό μž¬μ •μ˜ν•˜μ—¬ μ‚¬μš©μž μ •μ˜ 클래슀둜 μ‚¬μš©ν•˜λŠ” 것을 λ§ν•œλ‹€. μƒˆλ‘œμš΄ μ—°μ‚°μžλ₯Ό μ •μ˜ν•  μˆ˜λŠ” μ—†λ‹€. κΈ°λ³Έ 제곡 데이터 ν˜•μ‹μ— μ μš©ν•  λ•Œ μ—°μ‚°μžμ˜ 의미λ₯Ό λ‹€μ‹œ μ •μ˜ν•  수 μ—†λ‹€. 멀버 ν•¨μˆ˜λ‘œ μ˜€λ²„λ‘œλ“œλœ μ—°μ‚°μžμ˜ 첫 번째 νŒŒλΌλ―Έν„°λŠ” 항상 μ—°μ‚°μžκ°€ ν˜ΈμΆœλ˜λŠ” 객체의 클래슀 ν˜•μ‹μ΄λ‹€. 1. κ΅¬ν˜„ κ°€μž₯ λ‹¨μˆœν•œ λ§μ…ˆ μ—°μ‚°μžλ₯Ό 예둜 κ΅¬ν˜„ν•΄λ³΄μž. 1) 멀버 ν•¨μˆ˜ p1+p2λŠ” p1.operator+(p2)와 κ°™λ‹€. 멀버 ν•¨μˆ˜μ™€ μ „μ—­ ν•¨μˆ˜κ°€ λ‘˜ λ‹€ 같은 λ°©μ‹μœΌλ‘œ μ˜€λ²„λ‘œλ”© λ˜μ–΄μžˆλ‹€λ©΄ 멀버 ν•¨μˆ˜κ°€ μš°μ„ μ‹œλœλ‹€. νŠΉμ • μ˜›λ‚  μ»΄νŒŒμΌλŸ¬μ—μ„  이런 상황에 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚¬ 수 μžˆμœΌλ―€λ‘œ μ›¬λ§Œν•˜λ©΄ 멀버 ν•¨μˆ˜λ‘œ μ˜€λ²„λ‘œλ”©ν•˜λŠ” 것이 μ’‹λ‹€. #include using names..
[Unity] μŠ€ν¬λ¦½ν„°λΈ” 였브젝트(Scriptable Object)
Β·
πŸ“ Game/✏ Unity
μŠ€ν¬λ¦½ν„°λΈ” 였브젝트(Scriptable Object) 1. μ •μ˜ ScriptableObjectλŠ” 클래슀 μΈμŠ€ν„΄μŠ€μ™€λŠ” λ³„λ„λ‘œ λŒ€λŸ‰μ˜ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” 데이터 μ»¨ν…Œμ΄λ„ˆμ΄λ‹€. μ£Όμš” μ‚¬μš© 사둀 쀑 ν•˜λ‚˜λŠ” κ°’μ˜ 사본이 μƒμ„±λ˜λŠ” 것을 λ°©μ§€ν•˜μ—¬ ν”„λ‘œμ νŠΈμ˜ λ©”λͺ¨λ¦¬ μ‚¬μš©μ„ μ€„μ΄λŠ” 것이닀. μ΄λŠ” μ—°κ²°λœ MonoBehaviour μŠ€ν¬λ¦½νŠΈμ— λ³€κ²½λ˜μ§€ μ•ŠλŠ” 데이터λ₯Ό μ €μž₯ν•˜λŠ” ν”„λ¦¬νŒΉμ΄ μžˆλŠ” 경우 μœ μš©ν•˜λ‹€. μ΄λŸ¬ν•œ ν”„λ¦¬νŒΉμ„ μΈμŠ€ν„΄μŠ€ν™”ν•  λ•Œλ§ˆλ‹€ ν•΄λ‹Ή λ°μ΄ν„°μ˜ 자체 사본이 μƒμ„±λ˜κ²Œ λ˜λŠ”λ°, 이 방식 λŒ€μ‹  ScriptableObjectλ₯Ό μ΄μš©ν•˜μ—¬ 데이터λ₯Ό μ €μž₯ν•˜λ©΄ λͺ¨λ“  ν”„λ¦¬νŒΉμ˜ 레퍼런슀λ₯Ό 톡해 μ•‘μ„ΈμŠ€ ν•  수 μžˆλ‹€. 즉, λ©”λͺ¨λ¦¬μ— 데이터 사본을 ν•˜λ‚˜λ§Œ μ €μž₯ν•˜κ²Œ λœλ‹€. ν”„λ‘œμ νŠΈλ₯Ό λΉŒλ“œν•˜κΈ° μ „ μœ λ‹ˆν‹° μ—λ””ν„°μ—μ„œ μˆ˜μ • 및 ..
[Unity] Layer와 Tag μ‚¬μš© 및 차이
Β·
πŸ“ Game/✏ Unity
Layer와 Tag μ‚¬μš© 및 μ°¨μ΄μœ λ‹ˆν‹°μ—μ„œ μ‚¬μš©ν•˜λŠ” κ²Œμž„ μ˜€λΈŒμ νŠΈλŠ” 각각의 이름이 μ‘΄μž¬ν•˜κ³  κ·Έ μ˜€λΈŒμ νŠΈλ“€μ„ λΆ„λ₯˜ν•˜κΈ° μœ„ν•΄ Tag와 Layerλ₯Ό μ‚¬μš©ν•œλ‹€. κ·Έλ ‡λ‹€λ©΄ 두  μš”μ†Œκ°€ μ–΄λ–»κ²Œ μ‚¬μš©λ˜κ³  무슨 차이가 μžˆλŠ”μ§€ μ•Œμ•„λ³΄μž. κ²Œμž„ 였브젝트λ₯Ό μ„ νƒν•œ ν›„ μΈμŠ€νŽ™ν„° μ°½μ—μ„œ 상단을 보면 Tag와 Layerλ₯Ό 찾을 수 μžˆλ‹€.  ν΄λ¦­ ν›„ 맨 μ•„λž˜ Add Tag λ˜λŠ” Add Layerλ₯Ό λ‹€μ‹œ ν΄λ¦­ν•˜λ©΄ Tags & Layers 창으둜 μ΄λ™λœλ‹€.  Tags & Layers 창에선 ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©λ˜λŠ” λͺ¨λ“  Tag와 Layer듀을 κ΄€λ¦¬ν•œλ‹€.기본으둜 μΆ”κ°€λœ Tag와 Layer 외에도 μƒˆλ‘œμš΄ 값을 μΆ”κ°€ν•˜κ±°λ‚˜ μ‚­μ œν•  수 μžˆλ‹€.  1. LayerLayerλŠ” μ˜€λΈŒμ νŠΈλ“€μ˜ 그룹을 λ§Œλ“€κ³  κ΄€λ¦¬ν•˜λŠ” μš©λ„λ‘œ μ‚¬μš©ν•œλ‹€.κ²Œμž„ 였브젝트의 κΈ°λ³Έ 레..
[C#] ref와 out ν‚€μ›Œλ“œ
Β·
πŸ“ Language/✏ C#
ref와 out ν‚€μ›Œλ“œ ref와 out ν‚€μ›Œλ“œλŠ” 인자둜 λ„˜κΈ΄ λ³€μˆ˜λ₯Ό λ©”μ„œλ“œ λ‚΄λΆ€μ—μ„œ μ°Έμ‘° ν˜•νƒœλ‘œ μ‚¬μš©ν•œλ‹€λŠ” μ μ—μ„œ λ™μΌν•˜λ‹€. 속성(Property)은 λ³€μˆ˜κ°€ μ•„λ‹ˆλ―€λ‘œ 전달할 수 μ—†λ‹€. using System; namespace Test { class Program { static void Main(string[] args) { int i = 0; foo(ref i); Console.WriteLine(i); int j; bar(out j); Console.WriteLine(j); } static void foo(ref int a) { a = 3; } static void bar(out int a) { a = 15; } } } // 3 // 15 κ·ΈλŸ¬λ‚˜ 두 ν‚€μ›Œλ“œλ„ 차이점은 μžˆλ‹€. refλŠ” 인자둜 μ „λ‹¬ν•˜κΈ° ..
[Unity] Inspector Attribute
Β·
πŸ“ Game/✏ Unity
Inspector Attribute 슀크립트의 λ³€μˆ˜κ°€ λ§Žμ•„μ§ˆμˆ˜λ‘ μΈμŠ€νŽ™ν„°μ—μ„œ ν•œλˆˆμ— μ•Œμ•„λ³΄κΈ°κ°€ μ–΄λ €μ›Œμ§„λ‹€. μΈμŠ€νŽ™ν„°λ₯Ό κΉ”λ”ν•˜κ²Œ 정리할 수 μžˆλŠ” λͺ‡ κ°€μ§€ 속성듀에 λŒ€ν•΄ μ•Œμ•„λ³΄μž. 1. [Header (string)] μΈμŠ€νŽ™ν„° λ‚΄ 타이틀을 달 수 μžˆλŠ” 속성이닀. 2. [Space (float)] ν•„λ“œ 사이에 여백을 μ£ΌλŠ” 속성이닀. 3. [Range (float, float)] λ³€μˆ˜ 값을 μŠ¬λΌμ΄λ” ν˜•μ‹μœΌλ‘œ ν‘œμ‹œν•˜λŠ” 속성이닀. 4. [Multiline (int)] λ¬Έμžμ—΄μ„ μž‘μ„±ν•˜κΈ° νŽΈν•˜λ„λ‘ 라인의 수λ₯Ό λŠ˜λ €μ£ΌλŠ” 속성이닀. 5. [TextArea (int, int)] Multilineκ³Ό λ™μΌν•œ μ†μ„±μœΌλ‘œ 차이점은 μ΅œμ†Œ 크기와 μ΅œλŒ€ 크기λ₯Ό μ„€μ •ν•  수 μžˆλ‹€. 6. [SerializeField] private, prot..
[C++] λ¬Έμžμ—΄ 슀트림(stringstream)
Β·
πŸ“ Language/✏ C & C++
λ¬Έμžμ—΄ 슀트림 λ¬Έμžμ—΄μ— μ—¬λŸ¬ κ°€μ§€ μžλ£Œν˜•μ΄ 듀어왔을 λ•Œ μš©λ„μ— 맞게 νŒŒμ‹±ν•˜κΈ° μœ μš©ν•˜λ‹€. 헀더 #include μ½”λ”© ν…ŒμŠ€νŠΈμ—μ„œ λ¬Έμžμ—΄μ„ 풀이할 λ•Œ C++ string만으둜 ν•΄κ²°ν•˜κΈ°μ—” μž‘μ€ 어렀움이 μžˆλ‹€. 1. λ¬Έμžμ—΄ 슀트림 1) stringstream μž…μΆœλ ₯ 슀트림: μž…λ ₯ 슀트림, 좜λ ₯ μŠ€νŠΈλ¦Όμ„ λͺ¨λ‘ ν•  수 μžˆλ‹€. 2) istringstream μž…λ ₯ 슀트림 λ¬Έμžμ—΄μ„ 곡백과 '\n'을 κΈ°μ€€μœΌλ‘œ μ—¬λŸ¬ 개의 λ‹€λ₯Έ ν˜•μ‹μœΌλ‘œ μ°¨λ‘€λŒ€λ‘œ 뢄리할 λ•Œ νŽΈλ¦¬ν•˜λ‹€. 반볡문 μ‹€ν–‰ μ‹œ μžλ£Œν˜•μ— λ§žλŠ” 데이터가 없을 λ•ŒκΉŒμ§€ μ‹€ν–‰λœλ‹€. #include #include #include using namespace std; int main() { istringstream iss("test\n123 aaa 456"); string s1, ..