์ด๊ฒ์ด ๊ฐ๋ฐ์์๊ฒ ํ์ํ๊ฑฐ๋ ํฅ๋ฏธ๋ก์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง GDScript์์ ์ ํ์ ์ ๋ ฅ์ ๊ฐ๋ ๊ฒ์ด ์ ์ฉํ ์ ์๋ค๊ณ ์๊ฐํ๊ณ ์ฌ๊ธฐ์์ ์ด์ ๋ํด ํ ๋ก ํ๊ธฐ๋ฅผ ํฌ๋งํ์ต๋๋ค.
๋๋ "Nim"์ด๋ผ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ฐฐ์ฐ๊ณ ์๋๋ฐ GDNative์ ๋ํด ๊ฝค ์น์ํ ๋ชจ๋์ด ์๊ณ ๊ฑฐ๊ธฐ์ ๊ธฐ์ฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ๋ฐ ํฅ๋ฏธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค(C++์ ์๊ฐ์ ์ผ๋ก ๋์๊ฒ ์ด๋ ต์ง๋ง ์ด๊ฒ๊ณผ ๊ด๋ จ์ด ์๊ณ ๋ฐฐ๊ฒฝ์ด ์ฝ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค). Nim์ ์ ์ ์ผ๋ก ์ ํ์ด ์ง์ ๋์ด GDSCript๊ฐ ๋์ ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ผ์ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ ํ์ ์ง์ ํ๊ณ ์ถ์ ์ํฉ์ด ๋ฐ์ํ์ต๋๋ค.
์ฃผ๋ก ํจ์๋ฅผ ์์ฑํ ๋ ์ ๋ฌ๋ ์ ์๋ ๋ณ์์ ์ ํ์ ์ง์ ํ์ฌ ์ฝ๋ ์์ฑ์ด ๋ด๊ฐ ๋งํ๋ ๋ด์ฉ์ ์ ์ ์๋๋ก ํ๋ฉด ์ข๊ฒ ์ง๋ง ๋ค๋ฅธ ์ด์ ์ด ์๋ค๊ณ ํ์ ํฉ๋๋ค. ์ด๊ฒ.
๊ฐ์ ๊ฒ
func myfunction(a, b : int, c : InputEvent , d : String = "Default Value"):
(...)
๋์ ์ธ ๊ฒฝ์ฐ bd๋ ์ ์ ์ด์ง๋ง ๊ตฌ๋ฌธ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋ณด์ฌ์ค๋๋ค.
export ํค์๋๋ฅผ ์ฌ์ฉํ ๋ ํธ์ง๊ธฐ์ ๋ํ ์ ํ ํํธ๋ฅผ ์ง์ ํ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ฉด ํด๋น ์ ํ์ ๋ณ์๋ฅผ ์ ์งํ ํ์๊ฐ ์์ต๋๋ค. ์ด ์์ด๋์ด๋ GDScript๊ฐ ์๋ํ ๋ฐ์ ์๋ฐฐ๋๊ฑฐ๋ ์์ฃผ ์ ์ ์ด๋์ ์ํด ๋๋ฌด ๋ง์ ์์ ์ ํ ์ ์์ง๋ง ์ด์ผ๊ธฐํด ๋ณด๊ฒ ์ต๋๋ค.
ํ์ค ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค
func myfunction(something = InputEvent):
์๋ฌด ๊ฒ๋ ์ ๋ฌํ์ง ์์ผ๋ฉด ๋น ์ ๋ ฅ ์ด๋ฒคํธ๋ฅผ ์ ๊ณตํ์ง๋ง ๋ณ์๊ฐ ํด๋น ์ ํ์ด ๋๋๋ก ๊ฐ์ ํ์ง๋ ์์ต๋๋ค.
myfunction('string')
์ ์๋ํฉ๋๋ค.
๋ก๋๋งต์ ์์ต๋๋ค :)
https://github.com/godotengine/roadmap/blob/master/ROADMAP.md
@ํ์ค๋ฐํธ
์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋๋ GDScript์ ๋ค๋ฅธ ๋ถ๋ถ๊ณผ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์ฐธ์กฐ๊ฐ ์์ต๋๊น? ์๋๋ฉด ๋ก๋๋งต์ ์๋ ์์ด๋์ด์ ๋ถ๊ณผํฉ๋๊น?
๋ถํํ๋ ์๋์ค, ์ผ๋ถ irc ํ ๋ก ์ธ์ ์์ง ์ด์ ๋ํ ์ฐธ์กฐ๊ฐ ์์ต๋๋ค.
CC @reduz , ์ด์ ๋ํด ๊ทธ๊ฐ ์ผ๋์ ๋๊ณ ์๋ ๊ฒ์ ๋ํ ํํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
@LeonardMeagher2 ๋ ๋น์ ์ด ์ด ๊ฒ๊ณผ
์ด๊ฑด ์ด๋ค๊ฐ์:
func myfunction(something is InputEvent, something_else is String):
๊ทธ๊ฒ์ ๋์๊ฒ ๊ฝค ์ข์ผ๋ฉฐ is ํค์๋๋ฅผ ๋ ์ ์ฉํ๊ฒ ๋ง๋ค๊ณ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
๋๋ ๋์ํ์ง ์๋๋ค. String something
๋๋ something : String
์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. something is String
์(๋) ๋์๊ฒ ๋ณด์
๋๋ค.
String something
๋๋ something is String
๋ ๋ค ๊ด์ฐฎ์ต๋๋ค. ์ฝ๋ก ์ ์ฌ์ฉํ๋ฉด ์ฝ๋์์ ๋ง์ ์ฝ๋ก ๊ธฐํธ๋ฅผ ๋ง๋ค ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
is
๊ฐ ์ฌ์ฉ๋์ง ์๋๋ค๋ฉด ๋ค๋ฅธ ์ธ์ด์ ์ด ํ๊ธฐ๋ฒ์ ์ต์ํ๊ณ ๋ ์ผ๋ฐ์ ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ String something
์ ํธํฉ๋๋ค.
@neikeq
var something:String = " "
์ ๊ฐ์ด var๋ฅผ ์์ฑํ ๋๋ ์ ํ์ ์ ์ธํ ์ ์๋ค๋ฉด ๋์ํ ๊ฒ์
๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ๋ฅ ํจ์ ์ ์์์ ์ธ๋ฏธ์ฝ๋ก ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํผ๋์ค๋ฌ์ธ ๊ฒ์ ๋๋ค.
"Is"๋ ์ง๊ธ gdscript์์ ์์์ ๋ํด ๋ฌป๋ ๋ฐ ์ฌ์ฉ๋๋๋ฐ ์ ํ์ํ์ง ์์ต๋๊น?
C์ ๊ฐ์ ์ ํ ์ ๋์ฌ๊ฐ ๋ ๋์ IMO์ ๋๋ค. ๋ ์งง๊ณ ๋น ๋ฅด๊ฒ ์ ๋ ฅํ ์ ์์ผ๋ฉฐ ์ ํ์ ์ฌ์ฉํ ๋ var ๋๋ func๋ฅผ ๋์ฒดํ ์ ์์ต๋๋ค.
์์:
int some_variable
int some_function(int some_argument):
return some_variable + some_argument
๊ทธ๊ฒ์ ๋ํ ๋์ ํฌํ.
@juan-garcia-m
๋๋ ๊ทธ๊ฒ์ด ํ์ดํ๊ณผ ๊ฐ์ c์ ์ต์ํ์ง ์์ ์ฌ๋์๊ฒ ๋ ์ดํดํ๊ธฐ ์ฝ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ํ์ดํํ๊ธฐ๋ ์ฝ์ง๋ง ๊ฐ๋
์ฑ์ ํจ์ฌ ๋จ์ด์ง๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ํจ์๋ ๋ณ์๊ฐ ๋ฌด์์ธ์ง ํ ๋์ ํ์
ํ๋ ๊ฒ์ ์ ํธํ๋ฉฐ ํด๋น ํค์๋๋ฅผ ์ ํ์ผ๋ก ๋ฐ๊พธ๋ฉด ํด๋น ๊ธฐ๋ฅ์ด ์ ๊ฑฐ๋ฉ๋๋ค. ์ ๊ฐ C์ C++์ ์
๋ฌธํ๊ธฐ ์ด๋ ค์ด ์ด์ ์ค ํ๋์
๋๋ค.
๋ถ๋ช ํ ๊ทธ ์ธ์ด๋ ๋๋ฅผ ์ํด ๋ง๋ค์ด์ง ์ ์์ง๋ง, ๋๋ ์ด๋ฐ ๋๋์ ๋ฐ๋ ์ ์ผํ ์ฌ๋์ด ์๋ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
"is"์ ํ ๊ฐ์ง ๋ฌธ์ ๋ ํ์ฌ 3.0์์ "extens"์๋ ๊ฒ์ ๋ํด ์ฌ์ฉ๋ฉ๋๋ค. ์ฆ, ๋ ธ๋๊ฐ ํด๋์ค์ ์ํ๋์ง ํ์ธํฉ๋๋ค.
@Zireael07
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํจ์ ์ ์ธ์์ ์ ํ์ ํ์ธํ๋ ๊ฒ์ด ์ ์ ํด ๋ณด์
๋๋ค.
Extends๋ ์ฌ์ ํ ์คํฌ๋ฆฝํธ ์๋จ์์ ์ฌ์ฉ๋์ง๋ง ์ ํ ๊ฒ์ฌ๋ฅผ ์ํด "is"๊ฐ ์ฌ์ฉ๋ฉ๋๋ค(๊ทธ๋ฆฌ๊ณ ๋ฆฌํฐ๋ด์ ๊ฒฝ์ฐ typeof๋ผ๊ณ ์๊ฐํฉ๋๋ค).
C ์คํ์ผ ์ ๋์ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ณต์กํ๋ฉฐ ์ด๋ฌํ ์ ํ์ ์ธ์ด์ ๋ํ ํ์ค์ ๋ณ์์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ ์ ๋ซํ์ง? ์์ง ๊ตฌํ์ด ์๋์ด...
๊ทธ๋ฅ ํ ๋ก ์ด๋ผ ๋ซ์๋๋ฐ ์ํ๋ ๊ธฐ๋ฅ์ ์งํ ์ํฉ์ ์ถ์ ํ๊ธฐ ์ํด ๋ค์ ์ด๊ฒ ์ต๋๋ค
C ์คํ์ผ ์ ๋์ฌ๊ฐ ์ฌ๊ณ ๋๊ธฐ๋ฅผ ์ ๋ง๋ก ๋ฐ๋๋๋ค. Typescript์ ๋ํ ๋ด ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ๋ณ์๋ฅผ ์ด๊ธฐํํ ๋ ์์ฐ์ฑ์ด ๋จ์ด์ง๊ณ ๊ฐ์ธ์ ์ผ๋ก ์ฝ๋ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋๋ค. ์ด๊ฑธ ์จ์ผํ๋...
var foo: String = 'bar'
... var
ํค์๋๋ฅผ ์ ํ์ผ๋ก ๋ฐ๊พธ๋ ๋์ ...
String foo = 'bar'
...๋๋ฅผ ๋ฏธ์น๊ฒ ํด. ๋๋ ์ด๊ฒ์ด ๋งค์ฐ ์๊ณ ๊น๋ค๋กญ๊ฒ ๋ค๋ฆฐ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง, ์ฅ๊ธฐ์ ์ผ๋ก ๊ฒ์์์ ์์ ํ๋ฉด ํ์ํ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ํค ์ ๋ ฅ์ด ๋ฐ์ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
Python ๊ตฌ๋ฌธ์ ๋ฐ๋ฆ ๋๋ค(TypeScript ๋ฐ Haxe์๋ ์ ์ฌ).
์ด๊ฒ์ ๊ฝค ์๊ฒฌ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ ๋ง์ TypeScript ์ฝ๋๋ฅผ ์์ฑํ์ผ๋ฉฐ ๊ตฌ๋ฌธ์ด ์ ๋ง ๋ง์์ ๋ค์์ต๋๋ค. ํญ ๋ ๊ณต๋ฐฑ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ ์ฌ๋์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ๊ฒฝ๊ณผ ๊ด๋ จํ์ฌ ๋ฌด์์ด ๊ฐ์ฅ ์ข์์ง์ ๋ํ ์์ ์ ์๊ฒฌ์ ๊ฐ์ง ๊ฒ์
๋๋ค. var
๋ฅผ ๋ณด๋ ๊ฒ์ด ๋ ์ฝ๊ณ String
๋ฅผ ๋ณด๊ณ ๊ทธ๊ฒ์ด ํจ์์ธ์ง ๋ณ์์ธ์ง ์์ง ๋ชปํ๋ ๋์ ๋ณ์๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๋๋ "๋น ๋ฅธ ํ์ดํ"์ ์ข์ ๋
ผ๊ฑฐ๋ก ๋ณด์ง ์๊ณ , "์ค์ํ๊ธฐ ๋ ์ด๋ ต๋ค", "์ฝ๊ธฐ ์ฌ์"์ด ํจ์ฌ ๋ ๋ซ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค(์ฌ์ ํ ์๊ฒฌ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์).
Python ๋ฐฉ์์ ๋ ๋ค๋ฅธ ์์ ์ ๊ตฌ๋ฌธ ๋ถ์์ด ํจ์ฌ ์ฝ์ต๋๋ค. ํ์ฌ ํ์๋ ์ด๊ฒ์ ์์ฉํ๊ธฐ ์ํด ๋ง์ด ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค. ์ ๋์ฌ ์ ํ์ ๊ฒฝ์ฐ ์ํํ ์์ ์ ๊ฒฐ์ ํ๊ธฐ ์ํด ์ปจํ ์คํธ์ ๋ํด ๋ ๋ง์ ๊ฒ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋ค, ์ฝ๋ ๊ฐ๋ ์ฑ์ ๋งค์ฐ ์ฃผ๊ด์ ์ ๋๋ค. C ์คํ์ผ ๊ตฌ๋ฌธ์ผ๋ก ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์์ ๋ฅผ ๋ค์ ์์ฑํ์ต๋๋ค. _I_ ์๋ ์ฝ๋๊ฐ ๋ ์ฝ๊ธฐ ์ฝ๊ณ ๋ณ์์ ํจ์๋ฅผ ๊ตฌ๋ณํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
extends Node
const int MY_CONSTANT = 0
String my_member_variable = "Value"
void my_empty_func():
pass
float my_other_func(bool arg1, Node2D arg2, bool default = false):
Vector2 local_variable
int other_variable = 0
return float(other_variable)
๊ฐ๋ฐ์ ์์ฐ์ฑ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ "๋น ๋ฅธ ์
๋ ฅ"์ด ์ข์ ์ฃผ์ฅ์ด ์๋๋ผ๋ ๋ฐ ๋์ํ์ง ์์ต๋๋ค. Python ์คํ์ผ์ C๋ณด๋ค ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ์ฝ๊ฐ ๋ ๋ณต์กํฉ๋๋ค. ์ด์ ๋ฐํ ์ ํ์ ์ ์ํ๊ธฐ ์ํด ->
๋ฅผ ์
๋ ฅํด์ผ ํฉ๋๋ค. Python ์คํ์ผ ๊ตฌ๋ฌธ์ ๋ํด ๋ด๊ฐ ๋ณผ ์ ์๋ ์ ์ผํ ์ธ์๋ 1. Python์ ์ต์ํ ์ฌ๋๋ค์๊ฒ ๋ ์ดํํ๊ธฐ ์ํจ์ด๊ณ 2. ๊ตฌํํ๊ธฐ ๋ ์ฝ๊ณ ๋ ๋ค ํน๋ณํ ์ข์ ์ธ์๋ผ๊ณ ์๊ฐํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๊ตฌํํ๊ธฐ ์ฌ์ด ์ผ์ด๋ผ๊ณ ์ ์ํ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ๊ฒ์ด ๋ ์ด๋ ต๊ณ ๋ด ๊ธฐ์ ์์ค์ ๋์ด์ค ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ํ์ ํ์ง๋ง ์ฅ๊ธฐ์ ์ผ๋ก๋ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด์จ๋ , ๊ทธ๊ฒ์ ๋จ์ง ๋ด ๋ ํ๋์ ๊ฐ์น์ ๋๋ค : ๋ฏธ์ :. ์ ๋ ์ง๊ธ๊น์ง GDScript๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ ์ฆ๊ธฐ๊ณ ์์ผ๋ฉฐ ์ฌ์ด๋ ์ ํ ์์คํ ์ ๊ฐ๊ธฐ๋ฅผ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค.
Python์ ์ด๋ฏธ ์ด๊ฒ์ ์ง์ํ๋ฏ๋ก ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ต์ ์ ๊ฑฐ๊ธฐ์์ ๋ณต์ฌํ๋ ๊ฒ์ ๋๋ค.
var ํค์๋๋ฅผ ์ซ์ดํ๋ ์ฌ๋๋ค์ ์ํด ์ด์ ๊ฐ์ ๊ฒ์ ํ์ฉํ๋ ๊ตฌ๋ฌธ๊ณผ ๊ฐ์ Nim์ ์ถ๊ฐํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ์ ์์ต๋๋ค.
a:int
b:float
c:char
const
PI:float = 3.1416
MAX:int = 100
๋ฐํ ์ ํ์ด ํ์ํ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค. ๋ฐํํ๊ณ ํด๋น ์ถ๋ ฅ์ด ํน์ ์ ํ์ ๋ณ์๋ก ์ด๋ํ๊ณ ์ผ์นํ์ง ์์ผ๋ฉด throw๋ฉ๋๋ค.
๋๋ ๋น์ ์ด ๋น์ ์ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ ์ ๋น์ ์ ์ํด ๊ทธ ์ค์๋ฅผ ์ฐพ์ ์ ์๋ ํธ์ง์์ ๋ฅ๋ ฅ์ ์ป์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ฐํ ์ ํ void
๋ ๋์๊ฒ ๋ณ๋ก ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฐํ ์ ํ ์ ์๋ฅผ ์๋ตํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ->
๋ ๋ฐํ ์ ํ์ด ์์ผ๋ฉด ์ด์ํด ๋ณด์ด์ง๋ง func somefunc(): String:
(์๋ง๋?) ๊ฐ์ nim ๊ฐ์ ์์
์ ์ํํ์ง ์์ ์๋ ์์ง๋ง ์ ๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ๊ตฌ๋ฌธ๊ณผ ๊ฐ์ ํ์ดํ์ ํฌ์ ๋์๊ฒ ๋ง์ ๊ฒ์ ๋ํ๋ด์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐฉํฅ์ฑ์ ๋ณด์ด์ง๋ง ๊ทธ์๋ ์๋ฌด ๊ด๋ จ์ด ์์ต๋๋ค. ๋นํธ ๋จ์ ์ฐ์ฐ >>
๋ฐ <<
์๊ฐ๋๊ฒ ํ์ง๋ง ๋ฉด์์ ๋ฐฉํฅ์ฑ์ด ์๋ค.
__๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๋ ค๋ ์๋๊ฐ ์๋__
์ด์ ๋ ธ๋, ํด๋น ๋ณ์ ๋ฐ ๋ฐํ ์ ํ์ ๋ํ ๋ชจ๋ ํจ์๋ฅผ ์ฝ์ ์ ์์ผ๋ฏ๋ก ๋ฐํ ์ ํ์ด ์ค์ํ ๊ฒ์ผ๋ก ์๋ ค์ง ๊ฒฝ์ฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ง๊ธ์ ๋ณ๋ก ๋ง์ด ๋์ง ์์ ์๋ ์์ง๋ง ์ฌ๋๋ค์ ์๋ ๋ฐฉ์์ ์์ด ๋งค์ฐ ๋์ ์ธ ํ๋ฌ๊ทธ์ธ๊ณผ ๊ฒ์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ ๊ฒ์ ๋๋ค. IE, ํ๋ฌ๊ทธ์ธ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ์์ ์ ์์ต๋๋ค. "์ด ๋ ธ๋์๋ x ๋ฐํ ์ ํ์ ํจ์๊ฐ ํ์ํ์ง๋ง ์ฐธ์กฐํ๋ ค๋ ๋ ธ๋์๋ ํ์ํ ๋ฉ์๋ ์๋ช ์ด ์๋ ๋ฉ์๋๊ฐ ์์ต๋๋ค."
์ ๋ ์ฌ์ฉ์ ์นํ์ฑ์ ์ํด (System.Reflection์ ํตํด) ์ด๋ฌํ ์ ํ์ ํญ๋ชฉ์ ๊ฝค ๋ง์ด ์ฌ์ฉํ๋ AI Behavior๋ผ๋ Unity์ฉ ํ๋ฌ๊ทธ์ธ์ ์์ฑํ์ต๋๋ค. ๋ง ๊ทธ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ์ฑ์ฐ๊ณ ์ฌ๋ฐ๋ฅธ ์๋ช ์ด ์๋ ๋ชจ๋ ๋ฉ์๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋ฐฑ์ผ๋ก ์ฌ์ฉํ ๋ฉ์๋๋ฅผ ์ ํํ๋๋ก ํ๋ ๋๋กญ๋ค์ด ๋ฉ๋ด๊ฐ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฒ์์ด ์คํ๋ ๋ ๋ค์์์ ํธ์ถ๋๋ ๋ฉ์๋์ ๋๋ค. ์ํด ๋ง๋ค์ด์ง ์ํฉ์ ๋๋ค. ์ก์ธ์คํ๋ ค๋ ๊ฐ์ฒด/์คํฌ๋ฆฝํธ์ ๋ฉ์๋๊ฐ ์์ผ๋ฉด ๊ฒ์ฌ๊ธฐ์ ์ํ ์ฝ๋๊ฐ ํ์๋๋ฏ๋ก ์ฝ๋๋ฅผ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐํ๊ณ ํด๋์ค ์ด๋ฆ์ ๋ณ๊ฒฝํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. :)
๊ทธ๋์, ์ ์๊ฐ์๋ ๊ฐ๋ฅํ ํ ๋ง์ ์คํฌ๋ฆฝํธ ์ ๋ณด๋ฅผ ๊ฐ์ง ์ ์๋ค๋ ๊ฒ์ด ํ๋ฌ๊ทธ์ธ ์์ฑ์๋ฅผ ์ํด Godot๋ฅผ ํจ์ฌ ๋ ํ์ฅ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค.
๋ํ TypeScript ์คํ์ผ ๊ตฌ๋ฌธ( var name: String = "Godot"
)์ด ๋์ ์ธ์ด์ ์ถ๊ฐ๋ ์ ํ์ ์
๋ ฅ์ ๋ํ ํ์ค ๊ตฌ๋ฌธ์ด ๋์๊ธฐ ๋๋ฌธ์ ๋ฐ๋์งํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ํ ๋ค์๊ณผ ๊ฐ์ ํ์ด์ฌ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
https://www.python.org/dev/peps/pep-0484/
https://docs.python.org/3/library/typing.html
์ด๊ฒ์ ์ ํ์ ํ์ดํ์ ํตํด ์ ์ฌํ ๋์ ์ธ์ด์์ GDScript๋ก ์ค๋ ์ฌ๋๋ค์ ๋์ธ ๊ฒ์ ๋๋ค.
BTW, ์ธ์ /์ด๋ค ๋ฆด๋ฆฌ์ค์์ ๊ตฌํ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๊น? ์ธ๊ธ๋ 3.1์ ๋ณธ ์ ์ด ์์ต๋๊น?
์ด๊ฒ์ Godot 3.1์์ ์ฌ์ฉ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
C ์คํ์ผ ์ ๋์ฌ์ ๋ํ ์ธ์๊ฐ ๋ ๋ณต์กํ๊ฑฐ๋ ์ดํดํ๊ธฐ ์ฌ์ฐ๋ฉฐ ์ฝ๊ธฐ ์ฝ๊ณ ํ์ด์ฌ ๊ตฌ๋ฌธ ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์นด๋ฉ๋ผ ํ์ด์ง์์ ์ ๋ง ๋นจ๋ฆฌ ๋นผ๋ด๋ ค๊ณ set_orthogonal ( float size, float z_near, float z_far )
์ฒ์์๋ ์ ์ค์ค๋ก๋ ์ ์ดํดํ์ง ๋ชปํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ์๊ฐ์ ๋ฐฐ์ฐ๋ ๋ฐ์๋ ์ ๋ง ์๊ฐ์ด ๊ฑธ๋ ธ๊ณ , ๊ทธ ํ์๋ ์์ ํ ์ดํด๊ฐ ๋์์ต๋๋ค.
์๋ ํ์ธ์, ์ ์์ ๋๋ค.
์ด๋ก ์ ํด์:
์ ์ ํ์ดํ์ด ํ์ํ๋ค๊ณ ์๊ฐํ์ง๋ง ๊ฐ๋ฅํ๋ฉด ์ฌ์ฉ์๊ฐ ์ ํ์ ์ง์ ํ๋๋ก ํ๋ ๊ฒ์ ํผํ๊ณ ์ถ์ต๋๋ค.
๋ชจ๋ ์ฃผ์ ์ปดํ์ผ ์ธ์ด๋ ์ ์ ์ ํ ์ถ๋ก ์ผ๋ก ์ด๋ํ๊ณ ์์ต๋๋ค.
@reduz ๊ฐ Godot ์์ค ์ฝ๋์ ๋ํ ์ ํ ์ถ๋ก ์ ์ข์ํ์ง
๊ตฌํ์ด ๋ ๋ณต์กํ์ง ํ์คํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ๋์ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ๋ช ๊ฐ์ง ์ถ๊ฐ costruct๊ฐ ํ์ํฉ๋๋ค.
์ด ์์น์ ์ฌ์ฉํ๋ ์ธ์ด๊ฐ ์์ต๋๋ค.
https://crystal-lang.org/docs/
์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๋ ค๋ฉด ํจ์์ ๋ณ์๋ฅผ ์ ์ํ๋ ๋ฐ ๋ช ๊ฐ์ง ์๋ก์ด ํค์๋๊ฐ ํ์ํฉ๋๋ค. ๋๋ ์ ์ ์ ํ ๊ฒ์ฌ๋ฅผ ํ์ฑํ/๋นํ์ฑํํ๋ ๋ง๋ฒ์ ์ฃผ์์ด ์์ ์ ์์ต๋๋ค.
๋ค์์ ์ด๋ฐ ์ข ๋ฅ์ ์์คํ ์ด ๋ฌด์์ ํ ์ ์๋์ง์ ๋ํ ์์ ๋๋ค(๋ฃจ๋น๋ฅผ ์กฐ๊ธ ์๋ ์ฌ๋๋ค์ ์ํด)
def test(x)
return true if x
return "This is false"
end
puts test(false).upcase
puts test(true)
์ฐ์ถ:
Error in test.cr:6: undefined method 'upcase' for Bool (compile-time type is (Bool | String))
puts test(false).upcase
^~~~~~
์๊ฐ?
ํนํ ์ฝ๋ ์์ฑ๋ฟ๋ง ์๋๋ผ ํธ์ง ์ ์กด์ฌํ์ง ์๋ ์์ฑ/๋ฉ์๋ ๋ฐ ์๋ชป๋ ์ธ์ ์๋ฅผ ํ์ธํ๊ธฐ ์ํด ํ์ ์ ์ถ๋ฅผ ๊ฐ์ ํ๊ณ ์ถ์ต๋๋ค. ์ด ๋ถ๋ถ์ ์ ํ์ ์ ๋ ฅ์ด ์๋ฃ๋ ํ ๋ ๋ฒ์งธ ๋จ๊ณ๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ์ด์ ๋ํด ์ด์กฐํดํ์ง ์์ต๋๋ค.
@m4nu3lf ์ ์์ ๋ ๊ฝค ๋ฉ๋ฆฌ ์งํ๋ฉ๋๋ค. ์ค์ ๋ก ๋ถ๊ธฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฐ๊ณผ ์ ํ์ ์ ์ถํ๊ณ ์์ต๋๋ค. ์๋นํ ๋ณต์กํด์ง ์ ์๋ ์ฝ๋ ์คํ์ ์๋ฎฌ๋ ์ด์ ํ์ง ์๊ณ ๋ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์ํ๋๋์ง ์ ์ ์์ต๋๋ค. @reduz ๊ฐ ๊ฐ๊ณ ์ถ์ดํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
Godot๋ ๋งค์ฐ ์๊ฒฉํ ์ ํ ์์คํ
์ ๊ฐ์ง๊ณ ์์ง๋ง ๋ชจ๋ ๋ณ์๋ Variant์
๋๋ค(์ฆ, ๋ชจ๋ ์ ํ์ ์ ์ฅํ ์ ์์). ์ด๊ฒ์ ํธํ์ฑ์ ๊นจ๊ธฐ ์ํ ๊ฒ์ด ์๋๋ฏ๋ก ๊ทธ๋๋ก ์ ์งํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ var value = 42
ํ๋ฉด ๋ณ์๊ฐ ์ ์๋ผ๊ณ ์๋์ผ๋ก ๊ฐ์ ํ์ง ์์ต๋๋ค. ํนํ ์ธ๋ถ ์คํฌ๋ฆฝํธ์์ ๋ง์๋๋ก ์ค์ ํ ์ ์๋ ํด๋์ค ์์ค ๋ณ์์ ๊ฒฝ์ฐ์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ์ด๋ ์ ํ ์ถ๋ก ์ด ํ ์ ์๋ ์ผ์ ๋ฐฉํดํฉ๋๋ค(์๊ฒฐ ๋ชฉ์ ์ผ๋ก ์ด์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์).
์ธ๊ธํ ๋ฐ์ ๊ฐ์ด ํ ๊ฐ์ง ๊ฐ๋ฅ์ฑ์ ์ด๊ฒ์ ์ ํ ์ฌํญ์ผ๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค. ์คํฌ๋ฆฝํธ๋ณ๋ก ํ์ฑํ/๋นํ์ฑํ๋๋ ๊ฐ์น๊ฐ ๋ณ๋ก ์๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ ์ค์ ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ค์ ๋จ๊ณ์์ ์๊ฐํด์ผ ํ ๋ณ๋์ ์ ์์ ๋๋ค.
@vnen ์ด๋ก ์ ์ผ๋ก 'auto' ๋๋ 'let'๊ณผ ๊ฐ์ ๋งค๊ฐ๋ณ์/๋ฐํ ์ ํ/๋ณ์์ ๋ํ ๋ช ๊ฐ์ง ์๋ก์ด ํค์๋๋ฅผ ์ฌ์ฉํ๊ณ ๋์ผํ crystal-lang ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ ์๊ฐ์ ์ ํ์ ์ ์ถํ ์ ์์ต๋๋ค.
์ ์ฒด ํ์ ์ ์ถ๋ฅผ ์ฌ์ฉํ๋ ์ ์ ์
๋ ฅ์
๋๋ค.
๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํด ๋ด
์๋ค.
auto my_field = 42
์คํฌ๋ฆฝํธ์์ ์ ํ์ int
์ถ๋ก ํ๊ณ ๊ธฐ๋ณธ ๋ณํ์ int๋ก๋ง ์ ํํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ ์ธ์ด๋ ๋จ์ํ ๋ณ์ ์ด์์
๋๋ค. ๋ถ๊ธฐ์ ๋ฐ๋ผ ์ ํ์ ์ ํ์ ํ์ ์งํฉ์ผ๋ก ์ ํํ ์ ์์ต๋๋ค.
์์ ์์ ๊ฐ์ด ๋ฐํ ์ ํ์ String ๋๋ Bool๋ง ๋ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ํ๊ธฐ ์ํด์๋ ๋ฐ๋์
๋ํ "instanceof" ์กฐ๊ฑด ๋ฑ์ ํ์ธํด์ผ ํฉ๋๋ค.
if my_var instanceof MyClass:
...
๊ทธ๋ฌ๋ฉด if ์กฐ๊ฑด์ ๋ณธ๋ฌธ์์ my_var๋ 'MyClass'๋ง ๋ ์ ์์ผ๋ฏ๋ก ์ ํ์ด ํจ์ฌ ๋ ์ ํ๋ฉ๋๋ค.
์ด์ ์ ์ป์ผ๋ ค๋ฉด ๊ฐ๋ฅํ ๋ชจ๋ ์ ํ์์ ์ด๋ฆ์ด ๊ณต์ ๋๋ ๋ฉ์๋ ๋๋ ์ก์ธ์ค ํ๋๋ง ํธ์ถํ ์ ์์ด์ผ ํฉ๋๋ค.
๊ทธ๋์ ๋งํ์
auto x = MyClass.new()
if (...):
x = "hi"
๊ทธ๋ฐ ๋ค์ ์ด x๋ MyClass ๋๋ String์ ๋๋ค. ๋ฐํ์ ์ค๋ฅ๋ฅผ ํผํ๊ธฐ ์ํด ๋ ๋ค์ ๊ณตํต์ ์ธ ๋ฉ์๋๋ง ํธ์ถํ ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ๋ด๊ฐ ์๋ ์๊ฐํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ์์
์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋์ ๋๋ ์ด๊ฒ์ผ๋ก ๋์๊ฐ๊ณ ์ถ๋ค. ๋ฏธ๋์ ๊ตฌํ๋ ์๋ ์๊ณ ๋๊ตฐ๊ฐ crystal-lang์ ๋ํ ๋ฐ์ธ๋ฉ์ ์์ฑํ๊ธฐ๋ฅผ ๋ฐ๋ ์๋ ์์ต๋๋ค.
์ด์จ๋ ์ ๋ง ๋ฉ์ง ๊ธฐ๋ฅ์ธ ๊ฒ ๊ฐ์์
@m4nu3lf ๊ทํ์ ์์ฒญ์ด ๋ฌด์์ธ์ง ์ดํดํฉ๋๋ค. TypeScript๋ ๋งค์ฐ ์ ์ฌํฉ๋๋ค(์ด๋ ์ ๊ฐ ๋ ์น์ํ ์ธ์ด์ ๋๋ค).
๊ทธ๋ฌ๋ GDScript์ ๋ํด ๊ณ ๋ คํด์ผ ํ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
get_node()
(๋ง์ด ์ฌ์ฉ๋จ)๋ฅผ ์ฌ์ฉํ๋ฉด ์ป์ ์ ์๋ ๋
ธ๋ ์ ํ์ ์๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. Node
๋ผ๋ ๊ฒ๋ง ์์ง๋ง ๋ชจ๋ ํ์ ์ ํ์ด ๋ ์ ์์ต๋๋ค. load()
๋ฅผ ํธ์ถํ ๋ ๋ฆฌ์์ค์๋ ๋์ผํ๊ฒ ์ ์ฉ๋๋ฉฐ, ํนํ ๋์ ์ด๋ฆ์ผ๋ก ํธ์ถํ๋ ๊ฒฝ์ฐ์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. _input(event)
event
๋ ๋ชจ๋ InputEvent ํ์ ์ ํ์ด ๋ ์ ์์ผ๋ฏ๋ก _input(event)
์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.if my_var instanceof MyClass: ...
์ด๊ฒ์ ์ฝ๋ ์์ฑ์ ์ํด ์ด๋ฏธ ์ถ๋ก ๋์์ต๋๋ค. ์ค์ ์ ํ ๊ฒ์ฌ์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ํนํ ์ด ๊ฒฝ์ฐ๋ ์ฌ์ํ์ง๋ง ์๋นํ ๊ด๋ จ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด if some value == 42 and my_var is Sprite
๋ ๋ฒ์งธ ์กฐ๊ฑด์ ์ถ๊ฐํ๋ฉด ์ฝ๋ ์์ฑ์ด ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค.
๋๋ ๋ํ ์ฌ์ฉ์์ ํผ๋๋ฐฑ์ ๋ฃ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ ๊ธด ๊ธฐ๋ค๋ฆผ ๋์ ๋ชจ๋ ๊ฒ์ ์๋ฒฝํ๊ฒ ๋ง๋๋ ๊ฒ๋ณด๋ค ๋นจ๋ฆฌ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ๋ ์ค์ํฉ๋๋ค.
์์ฝ: ์ ํ ์ถ๋ก ์ ๊ฐ์ ํ๊ณ ์ถ์ง๋ง ์กฐ๊ธ์ฉ ๊ฐ์ ํ๋ฉด์ ๋จ๊ณ์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. ์ ํ์ ์ ๋ ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฉด ๋๋จธ์ง๋ ์ค๋ฅด๋ง์ ๋๋ค.
ํ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ข ์๋ชป ์ฝ์์ด, ๋ด ๋์.
์ ๋์ฌ์ ์ ๋ฏธ์ฌ๋ก ๋์๊ฐ๊ธฐ: UML๊ณผ Kotlin์ ๋ชจ๋ ": type"์ ์ฌ์ฉํฉ๋๋ค.
Basic๋ "DIM as INT"๋ฅผ ์ํํ์ต๋๋ค(":" ๋๋ "is" ๋์ "as" ์ฌ์ฉ).
@programaths ์ค๋ ์๊ฐ์ด
์ด๊ฑธ ๋ซ์์ผ ํ๋?
@LeonardMeagher2 ๋ด PR์ด ๋ณํฉ๋๋ฉด ์๋์ผ๋ก ๋ซํ๋๋ค.
@bojidar-bg ์ ๋ฏธ์ฌ ์์ฒด๊ฐ ํฅ๋ฏธ๋กญ๊ธฐ ๋๋ฌธ์ ์ ๋ฏธ์ฌ๊ฐ ์ฌ์ฉ๋๋ ๊ณณ์ ๋ช ๊ตฐ๋ฐ ์ถ๊ฐํ๊ณ ์ถ์์ต๋๋ค. UML์ ๋ถ์๊ณผ ๋น๊ธฐ์ ์ ์ธ ์ฌ๋๋ค์ ์ํ ๊ฒ์ด๊ธฐ๋ ํฉ๋๋ค. Kotlin์ "ํจ๊ณผ์ ์ธ Java"๋ฅผ ๊ตฌํํ๋ฉด์ Java๋ณด๋ค ๋ ํธ์ํ๊ณ ํ๋์ ์ผ๋ก ๊ฐ๋ฐ๋ ์ธ์ด์ ๋๋ค.
๋ฐ๋ผ์ ์ ๋ฏธ์ฌ๋ฅผ ์ ํํ ์ด์ ๋ฅผ ๊ธฐ๋กํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ํฌํจ๋ ์ ์์ต๋๋ค. ๋๋๋ก ์ฌ๋๋ค์ ์ด์ ๋ฅผ ๊ฐ๊ณ ์ถ์ดํ๊ณ ์ฌ์ฉ์์ ๊ด๋ จ์ด ์๋ ํ ๊ธฐ์ ์ ์ธ ์ด์ ๋ฅผ ์ฝ๊ฒ ๋ฌด์ํฉ๋๋ค.
(์: "ํ์๋ ๋ชจํธ์ฑ์ ์กฐ๊ธฐ์ ํด๊ฒฐํ ์ ์๊ณ ์๋๊ฐ 100๋ฐฐ ๋นจ๋ผ์ง์ ์๋ฏธํ๋ ๋์ผํ ํ๋ก๊ทธ๋จ์ ๋ ๋น ๋ฅด๊ฒ ์ปดํ์ผํ ์ ์๊ณ ๋ ๋ง์ ํ
์คํธ๋ฅผ ํ์ฉํจ)
ํญ์ ์ฌ๋ฃ๊ฐ ์์ด์ผ ์ข์ฃ ? ;-)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ Godot 3.1์์ ์ฌ์ฉ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.