[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, ..