Godot: GDScriptぎæŗ¨é‡ˆ

äŊœæˆæ—Ĩ 2018åš´07月21æ—Ĩ  Âˇ  45ã‚ŗãƒĄãƒŗト  Âˇ  ã‚Ŋãƒŧã‚š: godotengine/godot

į´„1嚴前、GDScriptīŧˆīŧƒ9469īŧ‰ãŽæŗ¨é‡ˆã‚’čŋŊ加するPRがありぞした。 ä¸ģãĢį›´æŽĨäŊŋį”¨ã•ã‚ŒãĒかãŖたためãĢ拒åĻされぞしたīŧˆč§Ŗ析ツãƒĒãƒŧãĢデãƒŧã‚ŋがãĒく、ã‚ĩãƒŧドパãƒŧテã‚ŖぎツãƒŧãƒĢぎãŋがäŊŋį”¨ã—ãĻいぞしたīŧ‰ã€‚

ã“ãŽææĄˆã¯ã€ã‚ˆã‚Šå¤šããŽã‚­ãƒŧワãƒŧドをハッキãƒŗグすることãĒくGDScriptã‚’ã‚ˆã‚Šæ‹Ąåŧĩ可čƒŊãĢする斚æŗ•ã§ã€æŗ¨é‡ˆãŽį”¨é€”ã‚’čŋŊ加することです。

おぎようãĒæŗ¨é‡ˆã‚’äŊŋį”¨ã§ããžã™ã‹īŧŸ

  • exportヒãƒŗト。 įžåœ¨ã€ã‚ŋイプごとãĢã‚Ģã‚šã‚ŋム構文をäŊŋį”¨ã—ãĻいぞす。 ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをäŊŋį”¨ã™ã‚‹ã¨ã€PropertyInfoぎäŊŋį”¨æŗ•ã¨ãƒ’ãƒŗトをį›´æŽĨč¨­åŽšã§ãã€GDScriptパãƒŧã‚ĩãƒŧで新しい構文をハックすることãĒく、イãƒŗ゚ペクã‚ŋãƒŧへぎ新しいčŋŊ加をより有劚ãĢæ´ģį”¨ã§ããžã™ã€‚
    明įĸēãĢするためãĢ、 exportキãƒŧワãƒŧドを掋し、ヒãƒŗトだけをæŗ¨é‡ˆãĢį§ģ動しぞす。 ã‚ŋイプはã‚ŋイプヒãƒŗトで厚įžŠã§ããžã™ã€‚
  • これãĢは、 exportã‚ĢテゴãƒĒもåĢぞれぞすīŧˆīŧƒ4378、īŧƒ10303īŧ‰ã€‚
  • onreadyキãƒŧワãƒŧドをæŗ¨é‡ˆãĢįŊŽãæ›ãˆãžã™ã€‚
  • į‰šåŽšãŽč­Ļ告をį„ĄåŠšãĢしぞす。 īŧƒ19993č­Ļ告をį„ĄåŠšãĢするためぎã‚ĸドホック構文でč­Ļ告をčŋŊ加しぞすが、äģŖわりãĢæŗ¨é‡ˆã‚’äŊŋį”¨ã§ããžã™ã€‚
  • setget īŧˆã‚˛ãƒƒã‚ŋãƒŧだけがåŋ…čĻãĒ場合はåĨ‡åĻ™ãĒ構文ですīŧ‰ã€‚
  • RPCキãƒŧワãƒŧドīŧˆ master 、 slave 、 sync 、 remote īŧ‰ã€‚
  • é–ĸ数をエデã‚Ŗã‚ŋãƒŧぎãŋīŧˆ tool īŧ‰ãžãŸã¯ãƒ‡ãƒãƒƒã‚°ãƒĸãƒŧドīŧˆīŧƒ12837ãĢé–ĸé€Ŗīŧ‰ã§ãŽãŋã‚ŗãƒŗパイãƒĢするãĒおぎ新しいプãƒĒプロã‚ģッã‚ĩãƒŧå‘Ŋäģ¤ã€‚
  • 新しい構文ぎ最įĩ‚įš„ãĒč­°čĢ–īŧˆå¤‰æ•°å¤‰æ›´æ™‚ãĢį™ēã™ã‚‹ã‚ˇã‚°ãƒŠãƒĢãĒおīŧšīŧƒ6491īŧ‰ã€‚
  • たãļん、ã‚Ģã‚šã‚ŋムぎ「デã‚ŗãƒŦãƒŧã‚ŋ」をčŋŊ加する可čƒŊ性。

刊į‚š
新しいキãƒŧワãƒŧドがčŋŊ加されるたãŗãĢ、それをå‡Ļį†ã™ã‚‹ãŸã‚ãĢGDScriptトãƒŧクナイã‚ļãƒŧとパãƒŧã‚ĩãƒŧを変更するåŋ…čĻãŒã‚りぞす。 į‰šãĢ、 export構文č§Ŗ析は非常ãĢč¤‡é›‘ã§ã‚ã‚Šã€äģ–ぎクナ゚é–ĸé€Ŗぎ構文č§Ŗæžã¨æˇˇåˆã•ã‚ŒãĻいぞす。

ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをäŊŋį”¨ã™ã‚‹ã¨ã€į‰šåŽšãŽåąžæ€§īŧˆexport、setget、onreadyãĒおīŧ‰ã‚’čŋŊ加するためãĢčĄŒã‚ã‚Œã‚‹äŊœæĨ­ãŒå°‘ãĒくãĒり、äģŖわりãĢ、おぎã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗが存在するかをįĸēčĒã™ã‚‹ã ã‘で済ãŋぞす。

įŸ­æ‰€
ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗぎã‚ĩポãƒŧトをčŋŊ加するãĢは、キãƒŧワãƒŧドだけぎ場合よりもパãƒŧã‚ĩãƒŧãĢ多くぎ変更を加えるåŋ…čĻãŒã‚りぞす。 ぞた、「単ãĒるæŗ¨é‡ˆã€ã¨ã—ãĻ新しい抟čƒŊã‚’ææĄˆã™ã‚‹ã‚ˆã†ãĢäēē々ãĢåŊąéŸŋを与える可čƒŊ性がありぞす。

構文
構文ãĢついãĻはį‰šãĢåĨŊãŋはありぞせんが、Pythonデã‚ŗãƒŦãƒŧã‚ŋぎようãĒもぎをæƒŗ像しãĻいぞす。 ただし、ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗはデã‚ŗãƒŦãƒŧã‚ŋと同じではãĒいため、PythonãƒĻãƒŧã‚ļãƒŧãĢとãŖãĻã¯æˇˇäšąã‚’æ‹›ãå¯čƒŊ性がありぞす。

<strong i="41">@onready</strong>
var my_sprite = $Sprite

åŧ•æ•°ã‚’æ¸Ąã™ãŸã‚ãĢ、それはé–ĸ数ぎようãĢ働くことができぞすīŧš

@export_hint(ENUM)
@export_hint_string("Attack,Defense")
export var my_enum : int = 0

多分æ‹Ŧåŧ§ãĒしīŧš

<strong i="48">@export_hint</strong> ENUM
<strong i="49">@export_hint_string</strong> "Attack,Defense"
export var my_enum : int = 0

ぞたは、名前äģ˜ããƒ‘ãƒŠãƒĄãƒŧã‚ŋãƒŧをäŊŋį”¨ã™ã‚‹īŧˆãã—ãĻキãƒŧワãƒŧドをéŋけるīŧ‰īŧš

<strong i="53">@export</strong> type=String hint=MULTILINE
var my_text = ""

ぞたは、äģ–ぎäŊ•ã‹ã€‚

ã‚Ģã‚šã‚ŋムæŗ¨é‡ˆ
不明ãĒæŗ¨é‡ˆã¯å˜ãĢį„ĄčĻ–されぞすīŧˆãŠãã‚‰ãč­Ļ告äģ˜ãīŧ‰ã€‚ そぎため、ã‚ĩãƒŧドパãƒŧテã‚ŖぎツãƒŧãƒĢはæŗ¨é‡ˆã‚’č§Ŗ析しãĻ、ドキãƒĨãƒĄãƒŗトぎį”ŸæˆãĒおぎäģ–ぎ抟čƒŊを提䞛できぞす。

イãƒŗãƒˆãƒ­ã‚šãƒšã‚¯ã‚ˇãƒ§ãƒŗAPIをčŋŊ加することもできぞすīŧš get_method_annotations() 、 get_property_annotations()ãĒお。 こぎようãĢしãĻ、たとえば゚クãƒĒプトをäēˆæœŸã™ã‚‹ãƒ—ナグイãƒŗは、ハãƒŧドã‚ŗãƒŧドされた名前をäŊŋį”¨ã™ã‚‹äģŖわりãĢ、ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをäŊŋį”¨ã—ãĻå‘ŧãŗå‡ēã™ãƒĄã‚Ŋッドをæąē厚できぞす。

archived discussion feature proposal gdscript

æœ€ã‚‚å‚č€ƒãĢãĒるã‚ŗãƒĄãƒŗト

gdscriptぎ構文が大嚅ãĢ変更されãĻいるぎはãĒぜですかīŧŸ ã‚‚ã¨ã‚‚ã¨ã¯ã€ã‚ˇãƒŗプãƒĢで、įŋ’垗しやすく、į›´æ„Ÿįš„ãĢãĒるようãĢč¨­č¨ˆã•ã‚ŒãĻいぞした。 これらすずãĻぎ新しいčŋŊ加īŧˆå…Ĩ力されたgds、æŗ¨é‡ˆīŧ‰ãĢより、新しい開į™ē者ãĢとãŖãĻ非常ãĢæˇˇäšąã™ã‚‹ã“ã¨ãĢãĒるぎではãĒいかとåŋƒé…ã—ãĻいぞす。

ãģとんおぎīŧˆã™ãšãĻではãĒいãĢしãĻもīŧ‰GDScript構文ぎ変更は、古いã‚ŗãƒŧドとäē’換性がありぞす。 ä¸ģãĒį›Žæ¨™ã¯ã€GDScriptをäŊŋį”¨ã™ã‚‹é–‹į™ēč€…ãŽį”Ÿį”Ŗ性を向上させることです。䞋īŧš

  • match゚テãƒŧãƒˆãƒĄãƒŗトは、switch-case゚テãƒŧãƒˆãƒĄãƒŗトīŧˆéžå¸¸ãĢčĻæą‚されたīŧ‰ã‚’可čƒŊãĢし、äēēã€…ãŒé…åˆ—ã¨čžžæ›¸ã‚’į°Ąå˜ãĢį…§åˆã§ãã‚‹ã‚ˆã†ãĢすることで、それをさらãĢ攚善しぞす。
  • onready変数īŧˆ2.xで新しくčŋŊ加されたīŧ‰ã¯ã€é ģįšãĢäŊŋį”¨ã•ã‚Œã‚‹ãƒ‘ã‚ŋãƒŧãƒŗã‚’å…ˇäŊ“化しぞす。つぞり、 _ready変数を初期化しぞす。
  • 型äģ˜ãGDScriptをäŊŋį”¨ã™ã‚‹ã¨ã€é–‹į™ēč€…ã¯ã€é–“é•ãŖた型ぎエナãƒŧがį™ēį”Ÿã—ãĒいことを最įĩ‚įš„ãĢįŸĨることができ、同時ãĢã‚ˆã‚Šč‰¯ã„ã‚Ēãƒŧトã‚ŗãƒŗプãƒĒãƒŧトぎ恊æĩを受けることができぞす。 これはã‚Ēãƒ—ã‚ˇãƒ§ãƒŗであるため、初åŋƒč€…ã¯æœ€åˆãŽã‚˛ãƒŧムでそれをå­Ļãļåŋ…čĻã¯ã‚りぞせん。

åŽŸéš›ãŽã‚˛ãƒŧム開į™ēč€…ã¨č˛ĸįŒŽč€…ぎ間ãĢ断įĩļがあるかもしれãĒいと感じãĻいぞす。

これはã‚Ēãƒŧプãƒŗã‚ŗミãƒĨニテã‚Ŗです。 ã‚˛ãƒŧム開į™ēč€…ã¯ã€ã‚ãĒたと同じようãĢ、æĨãĻ意čĻ‹ã‚’čĄ¨æ˜Žã™ã‚‹ã“ã¨ã‚’æ­“čŋŽã—ぞす。 いずれãĢせよ、ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗがįžåŽŸãĢãĒるぞでãĢはかãĒりぎ時間がかかりぞす。

[...] gdsがそぎ単į´”さからおんおんé›ĸれãĻいくぎではãĒいかとåŋƒé…ã—ãĻいぞす。それだけです。 すでãĢ十分すぎるãģおです...

すでãĢ十分ãĢč‰¯ã‘ã‚Œã°ã€æŠŸčƒŊãƒĒクエ゚トを受け取ることはできぞせん。

ぞた、exportキãƒŧワãƒŧドãĢ3čĄŒã‚’æŒ‡åŽšã™ã‚‹ã“ã¨ã¯ã€ã™ãšãĻを1čĄŒã§æŒ‡åŽšã™ã‚‹å ´åˆãĢ比ずãĻ非常ãĢéĸ倒です。 例īŧšonready var my_sprite = $ SpriteははるかãĢクãƒĒãƒŧãƒŗです

構文はぞだ厌成しãĻいぞせん。 onreadyおよãŗexportキãƒŧワãƒŧドがすぐãĢįŊŽãæ›ãˆã‚‰ã‚ŒãĒい可čƒŊ性がありぞす。

全ãĻぎã‚ŗãƒĄãƒŗト45äģļ

ã‚Ģã‚šã‚ŋムã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをæ­Ŗしくį†č§ŖしãĻいるぎで、æŦĄãŽã‚ˆã†ãĒもぎがありぞす。

<strong i="6">@description</strong> "Adds two numbers and returns the result."
<strong i="7">@parameter</strong> name=num1 type=float description="The first number"
<strong i="8">@parameter</strong> name=num2 type=float description="The second number"
<strong i="9">@returns</strong> type=float description="num1 and num2 added together"
func add(num1, num2):
    return num1 + num2

そしãĻ、これらぎã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをčŋ”すé–ĸ数、たとえばget_annotations("add")å‘ŧãŗå‡ēすことができぞすかīŧŸ これらぎã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗがGodotãĢよãŖãĻįĩ„ãŋčžŧãŋぎキãƒŧワãƒŧド/ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗとしãĻčĒč­˜ã•ã‚ŒãĒい場合でも、

@ LikeLakers2はい、それがそぎčĻį‚šã§ã™ã€‚

į§ã¯ãã‚ŒãŒåĨŊきです、į§ã¯čƒŒåžŒãĢある原čŖ…ãĢついãĻはįŸĨりぞせんが、GDscriptã‚ŗãƒŧドではそれはįžåœ¨ãŽã‚ˆã†ãĢčĻ‹ãˆã‚‹ã‚ˆã‚Šã‚‚ずãŖときれいãĢčĻ‹ãˆã‚‹ã§ã—ょう。 į‰šãĢsetgetぎ䞋では。

これは非常ãĢäžŋ刊ですが、čĒ­ãŋやすくするためãĢ1čĄŒãŽã‚šãƒ†ãƒŧãƒˆãƒĄãƒŗãƒˆã‚’č¨ąå¯ã™ã‚‹åŋ…čĻãŒã‚りぞす。 䞋えば、
<strong i="6">@onready</strong> var a = $Aã‚’č¨ąå¯ã™ã‚‹åŋ…čĻãŒã‚りぞす。 そうでãĒã‘ã‚Œã°ã€ã“ã‚Œã¯å¤§é‡ãŽæ”ščĄŒã‚’čŋŊ加し、こぎ場合、onreadyぎ有į”¨æ€§ã‚’į„Ąé§„ãĢしぞす。

äŊ•ã‹ãŽã‚ˆã†ãĒもぎ

<strong i="10">@onready</strong>
    var a = $A
    var b = $B
    var c = $C

同じæŗ¨é‡ˆã‚’č¤‡æ•°ãŽã‚šãƒ†ãƒŧãƒˆãƒĄãƒŗトãĢ遊į”¨ã™ã‚‹ã¨äžŋ刊です。

ぞた、ã‚ŗロãƒŗをäŊŋį”¨ã—ãĻ、æŗ¨é‡ˆãŒįĩ‚äē†ã™ã‚‹å ´æ‰€ã¨åŊąéŸŋを受ける゚テãƒŧãƒˆãƒĄãƒŗトが開始する場所をį¤ēし、GDScriptãŽæŽ‹ã‚ŠãŽéƒ¨åˆ†ã¨ä¸€č‡´ã•ã›ã‚‹ã“ã¨ãŒã§ããžã™ã€‚

æŗ¨é‡ˆã‚’明įĸēãĒ開始とįĩ‚äē†ã§č§Ŗ析できる場合は、ã‚ģミã‚ŗロãƒŗは不čĻã§ã‚り、åŋ…čĻãĢåŋœã˜ãĻåŒã˜čĄŒãĢ配įŊŽã§ããžã™īŧˆãŸã¨ãˆã°ã€ã€Œīŧˆīŧ‰ã€ã‚’äŊŋį”¨ã™ã‚‹å ´åˆã€ãžãŸã¯åŧ•æ•°ãŒãĒい場合īŧ‰ã€‚

vnenã¯å¤ã„ã‚ˇãƒ§ãƒŧトã‚Ģットキãƒŧワãƒŧドを削除するつもりはãĒいと思いぞすかīŧŸ

ãžãŸã€č›å…‰ãƒšãƒŗでこれらをå‡Ļį†ã™ã‚‹ã“ともåŊšįĢ‹ãĄãžã™ã€‚

ここでぎパãƒŧテã‚ŖãƒŧãĢ遅れぞしたが、これがエク゚ポãƒŧト変数ぎã‚ĢテゴãƒĒを提䞛し、ツãƒŧãƒĢ/デバッグ゚クãƒĒãƒ—ãƒˆãŽåˆ†å‰˛ã‚’äŊœæˆã™ã‚‹æ–šæŗ•ãĢ非常ãĢ興å‘ŗがありぞすかīŧŸ

æšĢ厚įš„ãĢ3.2ロãƒŧドマップをäŊœæˆã—ぞすが、エデã‚Ŗã‚ŋãƒŧãĢäŊŋいやすさぎ向上を提䞛するためãĢ、これが遅かれ旊かれ原čŖ…されることをæœŦåŊ“ãĢ望んでいぞす。

####不評ãĒ意čĻ‹ãŒå¯„せられãĻいぞすīŧš

gdscriptぎ構文が大嚅ãĢ変更されãĻいるぎはãĒぜですかīŧŸ ã‚‚ã¨ã‚‚ã¨ã¯ã€ã‚ˇãƒŗプãƒĢで、įŋ’垗しやすく、į›´æ„Ÿįš„ãĢãĒるようãĢč¨­č¨ˆã•ã‚ŒãĻいぞした。 これらすずãĻぎ新しいčŋŊ加īŧˆå…Ĩ力されたgds、æŗ¨é‡ˆīŧ‰ãĢより、新しい開į™ē者ãĢとãŖãĻ非常ãĢæˇˇäšąã™ã‚‹ã“ã¨ãĢãĒるぎではãĒいかとåŋƒé…ã—ãĻいぞす。 たとえば、godotぎ新しいäēēがチãƒĨãƒŧトãƒĒã‚ĸãƒĢをčĻ‹ãĻ、LikeLakers2ぎ投į¨ŋãĢあるã‚ŗãƒŧドをčĻ‹ã‚‹ã¨ã—たら、頭がįˆ†į™ēするだろうと思いぞす。 ãŠãĄã‚‰ã‹ã¨ã„ãˆã°ã€åŊŧらはそれãĢついãĻ/それがおぎようãĢ抟čƒŊするかãĒおãĢついãĻたくさんぎčŗĒ問をしãĒければãĒらãĒいでしょう。

ãŋんãĒぎgdsへぎ愛情や、č˛ĸįŒŽč€…がおぎようãĢそれを攚善したいぎかãĒおを厌全ãĢį†č§ŖしãĻã„ãžã™ã€‚åŽŸéš›ãŽã‚˛ãƒŧム開į™ēč€…ã¨č˛ĸįŒŽč€…ぎ間ãĢ断įĩļがあるかもしれãĒいと感じãĻいぞすīŧˆč˛ĸįŒŽč€…ãŒã‚˛ãƒŧム開į™ēč€…ã§ã¯ãĒã„ã¨č¨€ãŖãĻいるぎではãĒく、抟čƒŊは原際ãĢはåŋ…čĻã‚りぞせんīŧ‰ã€‚ čĒ°ã‚‚がこれらぎ抟čƒŊを刊į”¨ã™ã‚‹åŋ…čĻã¯ã‚りぞせん。 gdsがそぎ単į´”さからおんおんé›ĸれãĻいくぎではãĒいかとåŋƒé…ã—ãĻいぞす。それだけです。 それはæ—ĸãĢ十äēŒåˆ†ã§ã™...

ぞた、exportキãƒŧワãƒŧドãĢ3čĄŒã‚’æŒ‡åŽšã™ã‚‹ã“ã¨ã¯ã€ã™ãšãĻを1čĄŒã§æŒ‡åŽšã™ã‚‹å ´åˆãĢ比ずãĻ非常ãĢéĸ倒です。 例īŧš onready var my_sprite = $SpriteははるかãĢクãƒĒãƒŧãƒŗですīŧˆã¨ãĢかくį§ãĢとãŖãĻīŧ‰

ポイãƒŗト4ãĢé–ĸしãĻは、これはエデã‚Ŗã‚ŋãƒŧAFAIKã§åŽŸčĄŒã§ããžã™ã€‚ ぞた、imoは、「į‰šåŽšãŽč­Ļ告をį„ĄåŠšãĢする」ためãĢã‚ŗãƒŧドぎいたるところãĢæŗ¨é‡ˆã‚’äģ˜ã‘ると、非常ãĢ厄äģ‹ãĒã‚ŗãƒŧドãĢãĒる可čƒŊ性がありぞす。

gdscriptぎ構文が大嚅ãĢ変更されãĻいるぎはãĒぜですかīŧŸ ã‚‚ã¨ã‚‚ã¨ã¯ã€ã‚ˇãƒŗプãƒĢで、įŋ’垗しやすく、į›´æ„Ÿįš„ãĢãĒるようãĢč¨­č¨ˆã•ã‚ŒãĻいぞした。 これらすずãĻぎ新しいčŋŊ加īŧˆå…Ĩ力されたgds、æŗ¨é‡ˆīŧ‰ãĢより、新しい開į™ē者ãĢとãŖãĻ非常ãĢæˇˇäšąã™ã‚‹ã“ã¨ãĢãĒるぎではãĒいかとåŋƒé…ã—ãĻいぞす。

ãģとんおぎīŧˆã™ãšãĻではãĒいãĢしãĻもīŧ‰GDScript構文ぎ変更は、古いã‚ŗãƒŧドとäē’換性がありぞす。 ä¸ģãĒį›Žæ¨™ã¯ã€GDScriptをäŊŋį”¨ã™ã‚‹é–‹į™ēč€…ãŽį”Ÿį”Ŗ性を向上させることです。䞋īŧš

  • match゚テãƒŧãƒˆãƒĄãƒŗトは、switch-case゚テãƒŧãƒˆãƒĄãƒŗトīŧˆéžå¸¸ãĢčĻæą‚されたīŧ‰ã‚’可čƒŊãĢし、äēēã€…ãŒé…åˆ—ã¨čžžæ›¸ã‚’į°Ąå˜ãĢį…§åˆã§ãã‚‹ã‚ˆã†ãĢすることで、それをさらãĢ攚善しぞす。
  • onready変数īŧˆ2.xで新しくčŋŊ加されたīŧ‰ã¯ã€é ģįšãĢäŊŋį”¨ã•ã‚Œã‚‹ãƒ‘ã‚ŋãƒŧãƒŗã‚’å…ˇäŊ“化しぞす。つぞり、 _ready変数を初期化しぞす。
  • 型äģ˜ãGDScriptをäŊŋį”¨ã™ã‚‹ã¨ã€é–‹į™ēč€…ã¯ã€é–“é•ãŖた型ぎエナãƒŧがį™ēį”Ÿã—ãĒいことを最įĩ‚įš„ãĢįŸĨることができ、同時ãĢã‚ˆã‚Šč‰¯ã„ã‚Ēãƒŧトã‚ŗãƒŗプãƒĒãƒŧトぎ恊æĩを受けることができぞす。 これはã‚Ēãƒ—ã‚ˇãƒ§ãƒŗであるため、初åŋƒč€…ã¯æœ€åˆãŽã‚˛ãƒŧムでそれをå­Ļãļåŋ…čĻã¯ã‚りぞせん。

åŽŸéš›ãŽã‚˛ãƒŧム開į™ēč€…ã¨č˛ĸįŒŽč€…ぎ間ãĢ断įĩļがあるかもしれãĒいと感じãĻいぞす。

これはã‚Ēãƒŧプãƒŗã‚ŗミãƒĨニテã‚Ŗです。 ã‚˛ãƒŧム開į™ēč€…ã¯ã€ã‚ãĒたと同じようãĢ、æĨãĻ意čĻ‹ã‚’čĄ¨æ˜Žã™ã‚‹ã“ã¨ã‚’æ­“čŋŽã—ぞす。 いずれãĢせよ、ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗがįžåŽŸãĢãĒるぞでãĢはかãĒりぎ時間がかかりぞす。

[...] gdsがそぎ単į´”さからおんおんé›ĸれãĻいくぎではãĒいかとåŋƒé…ã—ãĻいぞす。それだけです。 すでãĢ十分すぎるãģおです...

すでãĢ十分ãĢč‰¯ã‘ã‚Œã°ã€æŠŸčƒŊãƒĒクエ゚トを受け取ることはできぞせん。

ぞた、exportキãƒŧワãƒŧドãĢ3čĄŒã‚’æŒ‡åŽšã™ã‚‹ã“ã¨ã¯ã€ã™ãšãĻを1čĄŒã§æŒ‡åŽšã™ã‚‹å ´åˆãĢ比ずãĻ非常ãĢéĸ倒です。 例īŧšonready var my_sprite = $ SpriteははるかãĢクãƒĒãƒŧãƒŗです

構文はぞだ厌成しãĻいぞせん。 onreadyおよãŗexportキãƒŧワãƒŧドがすぐãĢįŊŽãæ›ãˆã‚‰ã‚ŒãĒい可čƒŊ性がありぞす。

į§ã¯ã“ぎã‚ĸイデã‚ĸがæœŦåŊ“ãĢåĨŊきで、CīŧƒãŽåąžæ€§ãŒã¨ãĻもåĨŊきです。

ã‚¯ãƒŠã‚šã¨ã‚ˇã‚°ãƒŠãƒĢぎã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗã‚‚čˆˆå‘ŗæˇąã„ã‹ã‚‚ã—ã‚Œãžã›ã‚“ã€‚

プロパテã‚Ŗã€ãƒĄã‚Ŋッド、ぞたはクナ゚ãĢį‰šåŽšãŽã‚Ģã‚šã‚ŋムã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗがあるかおうかãĢé–ĸäŋ‚ãĒく、č‡Ē動įš„ãĢ動äŊœã™ã‚‹ã‚¤ãƒŗ゚ペクã‚ŋãƒŧプナグイãƒŗはį°Ąå˜ã§ã™ã€‚
構文ãĢé–ĸしãĻは、ã‚Ēãƒ—ã‚ˇãƒ§ãƒŗで1行ãĢ記čŋ°ã§ãã‚‹ã‚‚ぎをåĨŊãŋぞすが、それãģお重čĻã§ã¯ã‚りぞせん。

ã‚Ģã‚šã‚ŋムã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗを厚įžŠã™ã‚‹ãƒ—ロã‚ģ゚はおぎようãĢãĒりぞすかīŧŸ ã‚ŗãƒŧド内で毎回č‡Ēį”ąãĢ厚įžŠã•ã‚Œã‚‹ãŽã§ã¯ãĒく、クナ゚と同じようãĢ、ãƒĻãƒŧã‚ļãƒŧが一įžŠįš„ãĒ厚įžŠã§äŊœæˆã™ã‚‹ã“とをお勧めしぞす。

これãĢはもãŖとčĒŋæŸģがåŋ…čĻã ã¨æ€ã„ぞす。厌全ãĒ初åŋƒč€…がéŖ›ãŗčžŧもうとしãĻã„ã‚‹ã“ã¨ã‚’æˇˇäšąã•ã›ãĒいようãĢã€č¨€čĒžãĢīŧˆã‚Ēãƒ—ã‚ˇãƒ§ãƒŗぎ構文ãĒおとしãĻīŧ‰čŋŊ加するぎはį´ æ™´ã‚‰ã—いことだと思いぞす。

æŦĄãŽæ§‹æ–‡ã‚’čĻ‹ãĻも大丈å¤Ģだと思いぞす。

<strong i="7">@export</strong> type=String, hint=MULTILINE

ã€Œãƒ‘ãƒŠãƒĄãƒŧã‚ŋ」ぎ間ãĢã‚ŗãƒŗマをčŋŊ加すると、æŦĄãŽã‚ˆã†ãĢįžåœ¨ãŽæ§‹æ–‡ã¨ãŽæ•´åˆæ€§ãŒå°‘し向上すると思いぞす。

export (String, MULTILINE) var my_var

最初ぎバãƒŧジョãƒŗã¯ã‚‚ã†å°‘ã—å†—é•ˇã§ã™ãŒã€ãã‚Œã¯ãžãŸãã‚Œã‚’ã‚ˆã‚Šæ˜ŽįĸēãĢし、ã‚Ēãƒŧトã‚ŗãƒŗプãƒĒãƒŧトをäŊŋį”¨ã™ã‚Œã°ãã‚ŒãģおåŽŗはãĒいはずです:)

äģŠåžŒã€æ§‹æ–‡ãĢé–ĸã™ã‚‹č­°čĢ–がさらãĢåĸ—えるはずです。 全äŊ“įš„ãĢį§ã¯ããŽč€ƒãˆãŒåĨŊきです。

ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗは、構成をæŒŋå…Ĩã™ã‚‹ãŸã‚ãŽč‰¯ã„æ–šæŗ•ã§ã™ã€‚ ただし、構成とã‚ŗãƒŧドを分é›ĸする斚が、IMOぎよりクãƒĒãƒŧãƒŗãĒã‚ĸプロãƒŧチãĢãĒる可čƒŊ性がありぞす。 ヘッダãƒŧãƒ•ã‚Ąã‚¤ãƒĢがよりåŊšįĢ‹ã¤ã‚ˆã†ãĢそれらをčŋŊ加しãĻいる可čƒŊ性がありぞす。

@ bojidar-bgぎã‚ŗãƒĄãƒŗトから...

いずれãĢせよ、ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗがįžåŽŸãĢãĒるぞでãĢはかãĒりぎ時間がかかりぞす。

čĒ°ã‹ãŒã“ぎ原čŖ…を遅らせる「ブロッキãƒŗã‚°ã€ãŽå•éĄŒãŒäŊ•ã§ã‚るかをčĒŦ明できぞすかīŧŸ GDScript / manpowerãĢį˛žé€šã—ãĻいるだけですか、それともã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをã‚ĩポãƒŧトするためãĢäē‹å‰ãĢ原čŖ…するåŋ…čĻãŒã‚ã‚‹į‰šåŽšãŽæŠŸčƒŊがありぞすかīŧŸ

さãĻ、į§ãŽã‚ŗãƒĄãƒŗトからかãĒりぎ時間がįĩŒéŽã—たぎで、それはすでãĢそれをč¨ŧ明しãĻいると思いぞすかīŧŸ

ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗã‚ĩポãƒŧトぎä¸ģãĒブロッã‚Ģãƒŧは、ã‚ŗã‚ĸ開į™ē者ãĢ構文とã‚ģマãƒŗテã‚Ŗク゚ãĢついãĻ合意させることです。 そぎ垌、原čŖ…は比čŧƒįš„į°Ąå˜ãĢãĒるはずです。

ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗã¯ãƒĄã‚ŋデãƒŧã‚ŋ専į”¨ã§ã‚り、゚クãƒĒプトやエデã‚Ŗã‚ŋãƒŧぎ動äŊœãĢåŊąéŸŋを与えãĒいことを望んでいるため、 @ reduzとこれãĢついãĻčŠąã—åˆã†åŋ…čĻãŒã‚りぞす。 これはį§ãŽæœ€åˆãŽææĄˆã‚’全くį„Ąæ„å‘ŗãĢするでしょう。

į‰šãĢ単一ぎキãƒŧワãƒŧドīŧˆ onready 、 master 、 puppetãĒおīŧ‰ã‚’įŊŽãæ›ãˆã‚‹å ´åˆã¯ã€æŗ¨é‡ˆãŒååˆ†ãĢ明įĸēであると思いぞす。 しかし、それでもã‚ŗãƒŗã‚ģãƒŗã‚ĩã‚šãĢ達するåŋ…čĻãŒã‚りぞす。

čĒŦ明したようãĢ、これはGDScriptへぎį´ æ™´ã‚‰ã—いčŋŊ加ãĢãĒると思いぞす。 ãƒĄã‚ŋデãƒŧã‚ŋãĢ限厚すずきではãĒいと思いぞす。変数ãĢäŊŋį”¨ã•ã‚Œã‚‹ã‚­ãƒŧワãƒŧドぎ多く、į‰šãĢ場合ãĢよãŖãĻは少しčĒ­ãŋãĨらくãĒる可čƒŊ性ぎあるexportをįĸē原ãĢčŋŊい抜くåŋ…čĻãŒã‚りぞす。 ãã‚Œã‚’č¤‡æ•°ãŽã‚šãƒ†ãƒŧãƒˆãƒĄãƒŗトãĢåˆ†å‰˛ã™ã‚‹ã“ã¨ã¯ã€į†č§ŖãĢåŊšįĢ‹ã¤ã¨æ€ã„ぞす。

ぞた、そぎ3åš´å‰ãŽå•éĄŒīŧƒ6204をエãƒŦã‚ŦãƒŗトãĒæ–šæŗ•ã§č§ŖæąēするためãĢもäŊŋį”¨ã§ããžã™ã€‚

<strong i="8">@export</strong>
<strong i="9">@export_tooltip</strong> "The name used when displaying this item in the inventory and in shops."
var display_name := ""

ãžãŸã€ãƒĄã‚ŋデãƒŧã‚ŋäģĨ上ぎもぎをã‚ĩポãƒŧトするåŋ…čĻãŒã‚ることãĢも同意しぞす。 これãĢより、多くぎロジックがį°Ąį´ åŒ–され、čĒ­ãŋやすさが向上しぞす。

@willnationsdevãĢ同意し、ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをäŊŋį”¨ã—ãĻã‚ŗãƒŧãƒ‰ã§ã‚ˇã‚°ãƒŠãƒĢをæŽĨįļšã—たいと思いぞす。こぎようãĒもぎは、ã‚ŗãƒŧドぎ可čĒ­æ€§ã‚’æœŦåŊ“ãĢ向上させることができぞす。

@connect("timeout")
func _on_Timer_timeout():
   ...

@rludersは、゚クãƒĒプトがTimerノãƒŧド上ãĢあるとæƒŗ厚しãĻいぞす。

ã‚‚ãĄã‚ã‚“@Zylann 。 į°Ąå˜ãĒ䞋です。 「ã‚ŋãƒŧã‚˛ãƒƒãƒˆã€ãƒ‘ãƒŠãƒĄãƒŧã‚ŋをã‚ĩポãƒŧトし、č‡ĒåˇąæŽĨįļšãŽãŸã‚ãĢįœį•Ĩできぞす。 たとえば、゚クãƒĒプトがTimerå¤–éƒ¨ã§åŽŸčĄŒã•ã‚ŒãĻいる場合īŧš

@connect("timeout", $Timer)
func _on_Timer_timeout():
  ...

これをおぎようãĢ原čŖ…できるかわかりぞせんが、į‰šãĢキãƒŧワãƒŧドãĢついãĻは、gdsでæŗ¨é‡ˆã‚’įĸēčĒã—たいと思ãŖãĻいぞす。 ãžãŸã€č¨˜éŒ˛ã¨ã—ãĻは、æŗ¨é‡ˆã‚’åŒē切るためãĢã‚ģミã‚ŗロãƒŗã‚„æ”ščĄŒãŽäģŖわりãĢ「īŧˆīŧ‰ã€ã‚’äŊŋį”¨ã™ã‚‹ã“とをお勧めしぞす。

į‹Ŧč‡Ēぎæŗ¨é‡ˆ+æœŦæ ŧįš„ãĒæŗ¨é‡ˆãƒ—ロã‚ģッã‚ĩをäŊœæˆã§ãã‚Œã°ã•ã‚‰ãĢč‰¯ã„ã§ã—ã‚‡ã†ã€‚

ã‚‚ãĄã‚ã‚“@Zylann 。 į°Ąå˜ãĒ䞋です。 「ã‚ŋãƒŧã‚˛ãƒƒãƒˆã€ãƒ‘ãƒŠãƒĄãƒŧã‚ŋをã‚ĩポãƒŧトし、č‡ĒåˇąæŽĨįļšãŽãŸã‚ãĢįœį•Ĩできぞす。 たとえば、゚クãƒĒプトがTimerå¤–éƒ¨ã§åŽŸčĄŒã•ã‚ŒãĻいる場合īŧš

@connect("timeout", $Timer)
func _on_Timer_timeout():
  ...

それはäŊ•ã‚‰ã‹ãŽæ–šæŗ•ã§ãƒ—ナグイãƒŗãĢよãŖãĻã‚ĩポãƒŧトされる可čƒŊ性がありぞす、į§ã¯ãã‚Œã‚’ã‚ŗã‚ĸ抟čƒŊãĢしぞせん。
プナグイãƒŗはさらãĢåŧˇåŠ›ãĢãĒる可čƒŊ性がありぞす。

į§ãŒč¨€ãˆã‚‹ãŽã¯ã€ã“れらぎもぎが原čŖ…される前ãĢgdscriptをå­Ļんだことをうれしく思うということだけです。

@export_hint(ENUM)
@export_hint_string("Attack,Defense")
export var my_enum : int = 0

初åŋƒč€…としãĻ、į§ãĢとãŖãĻは非常ãĢ困é›Ŗでč§Ŗ析が困é›ŖだãŖたでしょう

@sleepcircleすずãĻぎ場合ãĢおいãĻGDScriptã‚’ã‚ˇãƒŗプãƒĢãĢäŋã¤ã‚ˆã†ãĢåŠĒめぞす。 したがãŖãĻ、ここでįšŽč‚‰ã‚’č¨€ã†åŋ…čĻã¯ã‚りぞせん。åŧ•į”¨ã—たã‚ŗãƒŧドは単ãĒã‚‹ææĄˆã§ã‚ã‚Šã€å°†æĨぎ構文ではありぞせん。

すãŋぞせん、įšŽč‚‰ã‚’č¨€ã†ã¤ã‚‚ã‚Šã¯ã‚ã‚Šãžã›ã‚“ã§ã—ãŸã€‚ 大多数がこれらぎčŋŊ加をæ‰ŋčĒã—ãĻいるようãĢčĻ‹ãˆãŸãŽã§ã€į§ã¯ãĄã‚‡ã†ãŠãã‚Œã‚‰ãŒéŋけられãĒいと思ãŖãĻいぞした。

ã‚˛ãƒŧム開į™ēイãƒŗ゚トナクã‚ŋãƒŧとしãĻ$ 0.02を投げたかãŖただけです。 č­Ļ告īŧšã‚ぞりč˛ĸįŒŽã—ãĒい不åŋ…čĻãĢé•ˇã„ã‚ŗãƒĄãƒŗト。新しい開į™ēč€…ãŒã“ã‚Œã‚’ãŠãŽã‚ˆã†ãĢčĒč­˜ã™ã‚‹ã‹ãĢついãĻ、プログナミãƒŗグを5嚴間教えたį§ãŽįĩŒé¨“だけです。

æŗ¨é‡ˆãŽã‚ˆã†ãĒæ–°ã—ã„č¨€čĒžã‚¤ãƒ‡ã‚Ŗã‚Ēãƒ ã‚’č€ƒãˆå‡ēすときは、できる限りぎã‚ĸフりãƒŧダãƒŗã‚šã‚’äžŋ䚗させることが重čĻã ã¨æ€ã„ぞす。 たとえば、 connect場合、新しい開į™ē者ãĢとãŖãĻã€ãƒ‘ãƒŠãƒĄãƒŧã‚ŋãƒŧを取りčžŧんでいくつかぎ副äŊœį”¨ãŒã‚ã‚‹é–ĸ数を抟čƒŊする

@ãŒãƒĄã‚ŋデãƒŧã‚ŋ専į”¨ãĢäŊŋį”¨ã•ã‚ŒãŸå ´åˆã€æ–°ã—い開į™ēč€…ãŒ@をčĻ‹ã‚‹ã¨ã€ã‚ŗãƒŧドロジックãĢåŊąéŸŋを与えãĒã„ãƒĄã‚ŋデãƒŧã‚ŋとしãĻčĒč­˜ã—ぞす。 ロジックãĢåŊąéŸŋを与える場合は、 xとしãĻäŊŋį”¨ã•ã‚Œã‚‹ã“ともあれば、 yとしãĻäŊŋį”¨ã•ã‚Œã‚‹ã“ともある新しいイデã‚Ŗã‚ĒムをčŋŊ加しãĒいことが重čĻã§ã™ã€‚

įžåœ¨ã€å¤‰æ•°ã‚’変更するãĢは、varぎæŽĨé ­čžžã€æŽĨå°žčžžã€ãŠã‚ˆãŗäģŖæ›ŋがありぞす。 åŋ…ずしも「変数äŋŽéŖžå­ã€ã§ã¯ãĒいもぎをいくつかãƒĒ゚トしぞすが、新しい開į™ēč€…ã¯ãã‚Œã‚‰ã‚’ã“ãŽã‚ˆã†ãĢčĻ‹ã‚‹å¯čƒŊ性がありぞす

  • プãƒŦフã‚Ŗック゚īŧš onready 、 export(...)

    • これらはそれぞれį•°ãĒるã‚ŋイプぎ動äŊœã‚’しぞす。 onreadyã¯åŽŸčĄŒæ™‚å¤‰æ•°ãŽãƒ­ãƒŧドãĢåŊąéŸŋしぞす。 exportは一į¨ŽãŽã‚¨ãƒ‡ã‚Ŗã‚ŋãƒŧヒãƒŗト/ãƒĄã‚ŋデãƒŧã‚ŋです。 それらを同じ場所でäŊŋį”¨ã™ã‚‹ã“とは、原際ãĢはそうではãĒいぎãĢ、åŊŧã‚‰ãŽčĄŒå‹•ã¯äŊ•ã‚‰ã‹ãŽåŊĸでé–ĸé€ŖしãĻいるずきだと感じぞす

  • äģŖæ›ŋæĄˆīŧš class_name 、 extends 、 signal 、 enum 、 const 、 func

    • これらぎäģŖæ›ŋåŊĸåŧã¯å•éĄŒãĒいようãĢ感じぞすが、「enum」と「const」を、たとえばintやstringsとåŒēåˆĨするぎはåĨ‡åĻ™ãĒ選択ぎようです。

  • ã‚ĩフã‚Ŗック゚īŧš setget

    • į‹Ŧč‡Ēぎã‚ĢテゴãƒĒぎSetgetã¯å•éĄŒã‚ã‚Šãžã›ã‚“ãŒã€é–‹į™ē者ãĢとãŖãĻはį ‚įŗ–ぎキãƒŧワãƒŧドであり、čĢ–į†ã‚ˇãƒ•ãƒˆã¯ãã‚Œãģお多くãĒいというį‚šã§exportãĢäŧŧãĻいぞす。 ここでは意čĻ‹ãŽé•ã†äēēがいぞすが

  • 中間ぎおこかīŧš var x : int = 5å…Ĩ力する

    • į‰šãĢ「enum」と「constã€ãŒåŒã˜ã“ã¨ã‚’čĄ¨ã™varぎäģŖæ›ŋキãƒŧワãƒŧドである場合、こぎ中間ぎå…Ĩ力はåĨ‡åĻ™ãĢ感じぞす。 constã¯ã€ã‚˛ãƒŧムロジックč‡ĒäŊ“ぎツãƒŧãƒĢよりも開į™ēč€…ãŽã‚¨ã‚¯ã‚šãƒšãƒĒエãƒŗ゚を変更するというį‚šã§ã€setgetãĢäŧŧãĻã„ã‚‹ã¨ã„ã†č­°čĢ–は間違いありぞせん。

それでは、æŗ¨é‡ˆãŽčŋŊ加をčĻ‹ãĻãŋぞしょう。

æŗ¨é‡ˆã¯ã€æ–°ã—い開į™ē者ãĢ教えるåŋ…čĻãŒã‚るぞãŖたく新しいæĻ‚åŋĩ/イデã‚Ŗã‚ĒムãĢãĒりぞす。 į†æƒŗįš„ãĢは、新しい開į™ēč€…ã¯ã€æ–°ã—ã„ã‚¤ãƒ‡ã‚Ŗã‚ĒムがåŊšįĢ‹ã¤ã‚ˆã†ãĢãĒãŖたときãĢ有抟įš„ãĢ拞い上げることができるようãĢ、

  • īŧˆTier 1īŧ‰func、var、およãŗé–ĸ数å‘ŧãŗå‡ēã—ã€æĄäģļ、ãƒĢãƒŧプãĒおぎいくつかぎåŸēæœŦįš„ãĒプログナミãƒŗグæĻ‚åŋĩぎãŋをįŸĨãŖãĻã„ã‚‹ã‚˛ãƒŧムをäŊœæˆã§ããžã™ã€‚
  • īŧˆTier 2īŧ‰æŦĄãĢã€ã‚ˇã‚°ãƒŠãƒĢ、厚数、列挙型ãĒおぎ有į”¨ãĒįŗ–/抟čƒŊをå­Ļįŋ’しぞす。
  • īŧˆTier 3īŧ‰åŊŧらはsetgetぎようãĒã‚ˇãƒ§ãƒŧトã‚Ģットをonreadyでå­Ļãŗぞす
  • īŧˆTier 3.1īŧ‰åŊŧらは開į™ēč€…å°‚į”¨ãŽį ‚įŗ–ã‚’å­Ļãŗãžã™ã€‚ãã‚Œã¯ã‚˛ãƒŧムを変えることはありぞせんが、エク゚ポãƒŧト、エデã‚Ŗã‚ŋãƒŧぎčĒŦ明、ツãƒŧãƒĢ、ã‚ŋイピãƒŗグãĒおでプロã‚ģ゚を変えぞす。
  • īŧˆTier 4īŧ‰į´”į˛‹ãĒドキãƒĨãƒĄãƒŗトとプロジェクト構造

Tier3-4がã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗぎä¸ģčĻãĒã‚ŋãƒŧã‚˛ãƒƒãƒˆã§ã‚ã‚‹ã‚ˆã†ãĢ感じぞす。 2つぎį•°ãĒる原čŖ…ぎためãĢį”Ÿåž’ãĢ与える2つぎエãƒŦベãƒŧã‚ŋãƒŧピッチがありぞす。

  • į´”į˛‹ãĒãƒĄã‚ŋデãƒŧã‚ŋīŧšã€Œãƒ‰ã‚­ãƒĨãƒĄãƒŗトとã‚ŗナボãƒŦãƒŧã‚ˇãƒ§ãƒŗを支援するためãĢ、゚クãƒĒプトãĢãƒĄã‚ŋデãƒŧã‚ŋをčŋŊ加するためぎæŗ¨é‡ˆãĢついãĻå­Ļãŗぞす。ã‚ŗãƒĄãƒŗトをäŊŋį”¨ã™ã‚‹ã‚ˆã‚Šã‚‚åŧˇåŠ›ã§ã™ã€‚」
  • DevãŽé€Ÿč¨˜/į ‚įŗ–īŧšã€Œã‚ŗãƒŧドを減らしたり、čĒ­ãŋやすくしたりする場合は、æŗ¨é‡ˆã‚’参į…§ã—ãĻください。æŗ¨é‡ˆã‚’äŊŋį”¨ã™ã‚‹ã¨ã€ã„くつかぎエデã‚Ŗã‚ŋãƒŧツãƒŧãƒĢã¨ã‚ˇãƒ§ãƒŧトã‚Ģットを提䞛しãĒがら、変数とé–ĸ数をčĒŦ明できぞす。」

į§ã¯å¤šããŽé–‹į™ē者ãĢGodotを教えãĻきぞしたが、æŗ¨é‡ˆã‚’äģ˜ã‘ã‚‹ãĢは少ãĒくともTier 3ã‚Ēãƒ—ã‚ˇãƒ§ãƒŗ、多くãĻもTier 4をäŊŋį”¨ã™ã‚‹ã¨æ€ã„ぞす。æŗ¨é‡ˆãŒčĄ¨į¤ēされるぞで、 @č¨˜åˇã‚’čĄ¨į¤ēするåŋ…čĻã¯ã‚りぞせん。全äŊ“įš„でかãĒã‚Šč¤‡é›‘ãĒã‚˛ãƒŧムを構į¯‰ã—、そぎプロã‚ģ゚を攚善しようとしãĻい

つぞり、「ドキãƒĨãƒĄãƒŗトがåŋ…čĻãĒ大čĻæ¨ĄãĒプロジェクトを構į¯‰ã—たらã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをå­Ļãļ」とäēē々ãĢäŧãˆã‚‹ãŽã¯į°Ąå˜ãĒãŽã§ã€ã‚˛ãƒŧムぎ抟čƒŊãĢとãŖãĻ重čĻã§ã¯ãĒい/äģŖæ›ŋぎ原čŖ…がある、ぞたはį´”į˛‹ãĢドキãƒĨãƒĄãƒŗトį”¨ãŽé–‹į™ēį•Ĩč¨˜å°‚į”¨ãŽã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをäŊŋį”¨ã™ã‚‹ã“とãĢį§ãŽæ„čĻ‹ãŒã‚りぞす。

ã‚šãƒŦッドからぎį‰šåŽšãŽãƒã‚¤ãƒŗトīŧš

  • エク゚ポãƒŧãƒˆã¯ãŠãŽã‚˛ãƒŧムãĢとãŖãĻも重čĻã§ã¯ãĒいため、エク゚ポãƒŧトãĢã¯å•éĄŒãĒいはずです。
  • Onreadyは旊いæŽĩ階でäžŋ刊ãĒã‚ˇãƒ§ãƒŧトã‚Ģットですが、新しい開į™ēč€…ã¯_readyで開始することから始めることができ、ネ゚トされたã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗぎ可čƒŊ性はonready書く回数がはるかãĢ少ãĒいことを意å‘ŗするため、åŋ…čĻã‚りぞせん。
  • setgetはすでãĢそぎようãĒåĨ‡åĻ™ãĒ構文であり、唯一ぎæŽĨå°žčžžã¨ã—ãĻすでãĢį‹Ŧč‡Ēぎイデã‚Ŗã‚Ēムであるため、厌全ãĢそこãĢåĢぞれãĻいる可čƒŊ性がありぞす
  • æŽĨįļšīŧšį§ãŒå…ˆå°Žã—ãĻいるようãĢ、それはé–ĸ数å‘ŧãŗå‡ēしイデã‚Ŗã‚ĒムですでãĢ厌į’§ã§ã™ã€‚ æŽĨįļšã™ã‚‹æ–šæŗ•ãŒč¤‡æ•°ã‚ると、チãƒĨãƒŧトãƒĒã‚ĸãƒĢ/ã‚ĩãƒŗプãƒĢã‚ŗãƒŧド゚ペãƒŧã‚šãŒæˇˇäšąã™ã‚‹å¯čƒŊ性がありぞす。 おそらく、äēē々がį‹Ŧč‡Ēぎæŗ¨é‡ˆã‚’æ›¸ãã“ã¨ã‚’č¨ąå¯ã™ã‚‹ã“ã¨ã¯ã€ã“ã‚Œã‚’æ¨™æē–化するよりもå„ĒれãĻいるでしょう。そうすれば、閉じたプロジェクトãĢ取りįĩ„んでいる開į™ēč€…ã¯ã€åŋ…ずしもパブãƒĒック゚ペãƒŧã‚šã‚’æˇˇäšąã•ã›ã‚‹ã“ã¨ãŽãĒいæŗ¨é‡ˆãŽãƒŠã‚¤ãƒ–ナãƒĒを構į¯‰ã§ããžã™ã€‚
  • ã‚ŋイプīŧšã‚ŋイプはįžåœ¨åĨ‡åĻ™ãĒ場所ãĢあり、一部ぎã‚ŋイプäŋŽéŖžå­ã¯äģŖæ›ŋであり、一部ぎã‚ŋイプäŋŽéŖžå­ã¯ããŽä¸­é–“ãĢありぞす。 おそらくそれらをæŗ¨é‡ˆã¨ã—ãĻ持つことは抟čƒŊしぞすīŧš @type(const int) @type(enum) 、これはそれらすずãĻを開į™ēč€…æŒ‡å‘ãŽį ‚įŗ–としãĻįĩąåˆã—ぞす

įš°ã‚Ščŋ”しãĢãĒりぞすが、大きãĒč˛ĸįŒŽã§ã¯ã‚りぞせんが、æŗ¨é‡ˆãŽä¸‹ã§ãŠãŽæŠŸčƒŊを包æ‹Ŧするåŋ…čĻãŒã‚ã‚‹ã‹ã‚’č€ƒãˆã‚‹ã¨ããŽč€ƒãˆã§ã™ã€‚ それらはį´ æ™´ã‚‰ã—いã‚ĸイデã‚ĸだと思いぞすが、おこãĢ収ぞるぎかæ­ŖįĸēãĢã¯ã‚ã‹ã‚Šãžã›ã‚“ã€‚é•ˇã•ãĢついãĻį”ŗしč¨ŗありぞせんが、į§ã¯ã„ã¤ã‚‚å°‘ã—å†—é•ˇã™ãŽãžã™ã€‚

į§ã¯ã“れがåĢŒã„です。
すずãĻぎフã‚ŖãƒŧãƒĢド、プロパテã‚Ŗã€ãƒĄã‚ŊッドãĢ大量ぎã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをäģ˜ã‘たくありぞせん

もãŖとキãƒŧワãƒŧドがæŦ˛ã—い

大量ぎキãƒŧワãƒŧドが気ãĢå…ĨらãĒい場合は、一部を削除できぞす

export MyClass : Node2D # export replaces class_name, : replaces extends 

signal mySignal #signal is kept

group(MyHeader, "res://icon.png" )
export var my_property : Array(int) setget _set_my_property, _get_my_property # : replaces export type

var test = 0 # no need for onready. variables declared outside of _ready automatically try to be onready vars

#others are kept

į§ã¯å…ƒãŽææĄˆãĢ厌全ãĢ同意しぞす。

į§ã¯ä¸Šč¨˜ãŽã‚ŗãƒĄãƒŗトãĢåŒæ„ã—ãžã›ã‚“ãŒã€é•ˇæ‰€ã¯įŸ­æ‰€ã‚’大嚅ãĢ上回ãŖãĻいぞす。

@ Shadowblitz16ã“ã‚Œã‚‰ãŽææĄˆãŽå¤šãã¯ã€æŦĄãŽį†į”ąã§ã€ã“こぎäēēã€…ã‚’æˇˇäšąã•ã›ãĻいぞす...

export MyClass : Node2D # export replaces class_name, : replaces extends

export 、 class_name 、 : 、およãŗextendsそれぞれ4つぎ厌全ãĢåˆĨ個ぎデãƒŧã‚ŋポイãƒŗãƒˆã¨ã‚ˇã‚šãƒ†ãƒ ã‚’æ§‹æˆã—ãžã™ã€‚ äģ–ぎもぎãĢ回垊不čƒŊãĒåŊąéŸŋを与えることãĒく、単ãĢそれらを切りæ›ŋえることはできぞせん。

  • exportは、エデã‚Ŗã‚ŋãƒŧGUIを構į¯‰ã™ã‚‹ãŸã‚ãĢイãƒŗ゚ペクã‚ŋãƒŧãĢ送äŋĄã•ã‚Œã‚‹į”Ÿæˆã•ã‚ŒãŸPropertyInfoã‚Ēブジェクトを構成しぞす。
  • class_nameは、゚クãƒĒプトをグロãƒŧバãƒĢクナ゚としãĻScriptServerãĢį™ģéŒ˛ã—ãžã™ã€‚ æŠ€čĄ“įš„ãĢã¯åž‹ã‚ˇã‚šãƒ†ãƒ ã¨ã¯äŊ•ãŽé–ĸäŋ‚もありぞせん。 ã“ã‚Œã¯ã€åŽŸčĄŒæ™‚ã§ã¯ãĒくč§Ŗ析時ãĢ゚クãƒĒプトぎグロãƒŧバãƒĢイãƒŗã‚šã‚ŋãƒŗã‚šã‚’äŊœæˆã™ã‚‹å ´åˆãĢ限り、GDScriptぎ「静įš„åž‹äģ˜ã‘」ぎ一部です。
  • :は、ã‚Ēãƒ—ã‚ˇãƒ§ãƒŗぎ型ヒãƒŗトãĢäŊŋį”¨ã•ã‚Œ
  • extendsは、įļ™æ‰ŋされたクナ゚ãĢäŊŋį”¨ã•ã‚Œãžã™īŧˆã”å­˜įŸĨぎとおりīŧ‰ã€‚ これはäģ–ãŽč¨€čĒžã§ã¯ã‹ãĒり一čˆŦįš„ãĒ構文であり、すずãĻぎドキãƒĨãƒĄãƒŗトとチãƒĨãƒŧトãƒĒã‚ĸãƒĢはすでãĢこぎ斚æŗ•ãĢåž“ãŖãĻいぞす。 これからé›ĸれãĻ、į´”į˛‹ãĢ襨éĸįš„ãĒį†į”ąã§ã‚ˆã‚Šå¤šããŽäŊœå“ã‚’äŊœæˆã™ã‚‹åŧˇã„イãƒŗã‚ģãƒŗテã‚Ŗブはありぞせん。
group(MyHeader, "res://icon.png")

これがäŊ•ã‚’するぎかį§ãĢはわかりぞせん。 つぞり、ノãƒŧドは「MyHeader」グãƒĢãƒŧプãĢčŋŊ加されるようですīŧˆã“れはį†ãĢかãĒãŖãĻいる可čƒŊ性がありぞすīŧ‰ãŒã€ã‚ĸイã‚ŗãƒŗはäŊ•ã§ã™ã‹īŧŸ グãƒĢãƒŧプãĢはã‚ĸイã‚ŗãƒŗがé–ĸé€Ŗäģ˜ã‘られãĻいぞせん。

export var my_property : Array(int) setget _set_my_property, _get_my_property # : replaces export type

前ãĢčŋ°ãšãŸã‚ˆã†ãĢ、これらはすずãĻã€åŒã˜ã‚ˇã‚šãƒ†ãƒ ã§ã¯ãĒく、į•°ãĒã‚‹ã‚ˇã‚šãƒ†ãƒ ãĢåŊąéŸŋを及ãŧしぞす。 さらãĢ、値ぎã‚ŋイプぞたはそぎ初期化を柔čģŸãĢしたい場合がありぞす。 たとえば、動įš„GDScriptでは、æŦĄãŽã‚ˆã†ãĒことができぞす。

onready export(NodePath) var the_node = get_node(the_node)
var test = 0 # no need for onready. variables declared outside of _ready automatically try to be onready vars

æē–備厌äē†é€šįŸĨぎ前ãĢデãƒŧã‚ŋを初期化しãĻも意å‘ŗがありぞせん。 ゚クãƒĒプトは、Nodeクナ゚ではãĒく、Objectクナ゚ãĢé–ĸé€Ŗäģ˜ã‘られãĻいぞす。 ゚クãƒĒプトぎプロパテã‚Ŗは、構į¯‰ä¸­ãĢ初期化されぞす。 Nodeクナ゚ぎã‚ŗãƒŗ゚トナクã‚ŋãƒŧãĢ到達しãĻも、それは変わりぞせん。 _ready()通įŸĨは、イãƒŗã‚šã‚ŋãƒŗ゚化ぎかãĒり垌ãĢį™ēį”Ÿã—ぞす。 変数ぎ初期化ぎデフりãƒĢトぎã‚ŋイミãƒŗグがã‚Ēブジェクトとノãƒŧド間でį•°ãĒると、非常ãĢæˇˇäšąã—ã€Godotをå­Ļįŋ’しãĻäŊŋį”¨ã™ã‚‹äēēãĢとãŖãĻは多くぎäēˆæ¸ŦできãĒい動äŊœãĢつãĒがりぞす。


į§ã¯ã‚ãĒãŸãŽææĄˆã‚’æ‰“ãĄåˆ‡ã‚‹ã¤ã‚‚ã‚Šã¯ã‚ã‚Šãžã›ã‚“ãŒã€ã‚€ã—ã‚äēēã€…ãŒã“ã‚Œã‚‰ãŽææĄˆã•ã‚ŒãŸå¤‰æ›´ãŽæ­ŖåŊ“性をčĻ‹ãĻいãĒいį†į”ąã‚’čĒŦ明するだけです。

@willnationsdevそぎ大丈å¤Ģį§ã¯į†č§ŖしãĻいぞす
æŗ¨é‡ˆã¨čŋŊ加ぎキãƒŧワãƒŧãƒ‰ãŽä¸Ąæ–šã‚’čĄŒã†ãŽã¯ãŠã†ã§ã™ã‹
こぎようãĢしãĻ、ãƒĻãƒŧã‚ļãƒŧはåŋ…čĻãĢåŋœã˜ãĻæŗ¨é‡ˆã‚’äŊŋį”¨ã§ãã€ãƒ•ã‚ŖãƒŧãƒĢドごとãĢ数十ぎæŗ¨é‡ˆã‚’äģ˜ã‘たくãĒい場合はキãƒŧワãƒŧドをäŊŋį”¨ã§ããžã™ã€‚

įˇ¨é›†īŧšCīŧƒã‚’、そぎようãĢįĩ„ãŋåˆã‚ã›ã‚‹ã“ã¨ãŒã§ãã‚‹åąžæ€§ã¨ã—ãĻæŗ¨æ„ã—ãĻください。
[Attribute1(), Attribute2()]
ãŸã ã—ã€ã“ã‚Œã¯čĄŒæ•°ã‚’æ¸›ã‚‰ã™ãŽãĢåŊšįĢ‹ã¤ã‹ã‚‚しれぞせんが、それでも少し醜いです

@ Shadowblitz16可čƒŊであれば、į‰Šäē‹ã‚’čĄŒã†ãŸã‚ãŽæ˜Žį™ŊãĒæ–šæŗ•ã‚’1つだけãĢしたい。 2つぎį•°ãĒる構文を持つことは、そぎį›Žæ¨™ãĢ反しぞす。

@Calinouäēē々がåĻĨ協できãĒいぎであれば、gdscriptはそぎぞぞãĢしãĻおくずきだと思いぞす。
1-下äŊäē’換性を不åŋ…čĻãĢåŖŠã—ぞす
2-それはより大きãĒãƒ•ã‚Ąã‚¤ãƒĢとčĒ­ãŋãĢくいã‚ŗãƒŧドをäŊœæˆã—ぞす
3-それはäēē々ãĢåŊŧらがæ…ŖれãĻいãĒã„æ–°ã—ã„ã‚ˇã‚šãƒ†ãƒ ã¸ãŽå¤‰æ›´ã‚’åŧˇåˆļしぞす。
4-それはäēē々ãĢåŊŧらが望ぞãĒいかもしれãĒã„ã‚ˇã‚šãƒ†ãƒ ã‚’äŊŋį”¨ã™ã‚‹ã“とをåŧˇåˆļしぞす

1-下äŊäē’換性を不åŋ…čĻãĢåŖŠã—ぞす
2-それはより大きãĒãƒ•ã‚Ąã‚¤ãƒĢとčĒ­ãŋãĢくいã‚ŗãƒŧドをäŊœæˆã—ぞす
3-それはäēē々ãĢåŊŧらがæ…ŖれãĻいãĒã„æ–°ã—ã„ã‚ˇã‚šãƒ†ãƒ ã¸ãŽå¤‰æ›´ã‚’åŧˇåˆļしぞす。
4-それはäēē々ãĢåŊŧらが望ぞãĒいかもしれãĒã„ã‚ˇã‚šãƒ†ãƒ ã‚’äŊŋį”¨ã™ã‚‹ã“とをåŧˇåˆļしぞす

æ­Ŗį›´ãĒところ、それらはかãĒりæ‚Ēã„č­°čĢ–です。 これらぎ4つぎポイãƒŗãƒˆãŽã†ãĄ3つは、APIぎ大きãĒ変更ãĢå›ē有ぎもぎであり、最初ぎポイãƒŗトは、古いキãƒŧワãƒŧドベãƒŧã‚šãŽã‚ˇã‚šãƒ†ãƒ ã¨ãŽäē’換性をしばらくįļ­æŒã™ã‚‹ã“とで回éŋできぞすīŧˆéžæŽ¨åĨ¨ãŽč­Ļ告がある可čƒŊ性がありぞすīŧ‰ã€‚

_įˇ¨é›†īŧšį§ãŒæŽ¨æ¸Ŧするč‡Ē動変換ツãƒŧãƒĢを提䞛することもできぞす。_

ポイãƒŗト2ãĢついãĻは、ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗãŒã‚ˆã‚Šå¤šããŽčĄŒã‚’åĢã‚€ãƒ•ã‚Ąã‚¤ãƒĢãĢつãĒがる可čƒŊ性があるというäē‹åŽŸãĢčĒ°ã‚‚が同意すると思いぞすが、ここぎãģとんおぎäēēは、それがčĒ­ãŋãĢくいã‚ŗãƒŧドをäŊœæˆã™ã‚‹ã¨ã„うäē‹åŽŸãĢ同意しぞせん。

@groudこれは不čĻãĒもぎãĢã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをäŊŋį”¨ã—ãĻいぞす
1-抟čƒŊするもぎを非推åĨ¨ãĢするåŋ…čĻãŒã‚るぎはãĒぜですかīŧŸ
2-フã‚ŖãƒŧãƒĢãƒ‰ã‚’čĄ¨į¤ēするためãĢ5行下ãĢ゚クロãƒŧãƒĢするåŋ…čĻãŒã‚る場合はčĒ­ãŋãĢくくãĒりぞす

  • エク゚ポãƒŧトはåŸēæœŦįš„ãĢįˇ¨é›†č€…へぎå…Ŧ開キãƒŧワãƒŧドです
  • onreadyはåŸēæœŦįš„ãĢ、゚クãƒĒãƒ—ãƒˆãŒåŽŸčĄŒã•ã‚Œã‚‹å‰ãŽvaråŽŖč¨€ã§ã™ã€‚

ãŠãĄã‚‰ã‚‚æŗ¨é‡ˆãĢは遊しãĻいぞせん

ãƒĄãƒŗバãƒŧ厚įžŠã¯ã€ã“ã‚ŒãŒč‰¯ã„ã“ã¨ã‚’į§ãŒæœŦåŊ“ãĢčĻ‹ã‚‹ã“とができる唯一ぎもぎであり、こぎ場合、それらは折りたたむåŋ…čĻãŒã‚りぞす。

@groudこれは不čĻãĒもぎãĢã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをäŊŋį”¨ã—ãĻいぞす

こぎ゚ãƒŦッドでは、多くぎãƒĻãƒŧã‚šã‚ąãƒŧ゚が提į¤ēされãĻいぞす。 ドキãƒĨãƒĄãƒŗト、イãƒŗãƒˆãƒ­ã‚šãƒšã‚¯ã‚ˇãƒ§ãƒŗã€ã‚ˆã‚Šč¤‡é›‘ãĒプナグイãƒŗãĒお、キãƒŧワãƒŧドでã‚ĢバãƒŧできãĒいã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗぎãƒĻãƒŧã‚šã‚ąãƒŧ゚はたくさんありぞす。

1-抟čƒŊするもぎを非推åĨ¨ãĢするåŋ…čĻãŒã‚るぎはãĒぜですかīŧŸ

そぎようãĒことをするį†į”ąã¯ãŸãã•ã‚“ありぞす。 よりクãƒĒãƒŧãƒŗãĒAPIや柔čģŸæ€§ãĒおを原įžã™ã‚‹ãŸã‚ãĢ、抟čƒŊã‚’é€˛åŒ–ã•ã›ã‚‹åŋ…čĻãŒã‚るかもしれぞせん。新しいバãƒŧジョãƒŗがåēƒãäŊŋį”¨ã•ã‚ŒãŸã‚‰ã€å¯čƒŊãĒ場合はäģĨ前ぎバãƒŧジョãƒŗとぎäē’換性を削除することをお勧めしぞす。これãĢは間違いãĒããƒĄãƒŗテナãƒŗã‚šã‚ŗ゚トがかかるためです。

2-フã‚ŖãƒŧãƒĢãƒ‰ã‚’čĄ¨į¤ēするためãĢ5行下ãĢ゚クロãƒŧãƒĢするåŋ…čĻãŒã‚る場合はčĒ­ãŋãĢくくãĒりぞす

čĒ‡åŧĩするåŋ…čĻã¯ã‚りぞせん。 そぎようãĒææĄˆã‚’č­°čĢ–するį›Žįš„は、そぎようãĒå•éĄŒã‚’å›žéŋするぎãĢ十分゚マãƒŧトãĒ構文を可čƒŊãĢすることです。 į§čĻ‹ã§ã™ãŒã€ã‚¨ã‚¯ã‚šãƒãƒŧトぎヒãƒŗトは、エク゚ポãƒŧトぎæŗ¨é‡ˆã¸ãŽåŧ•æ•°ã¨ã—ãĻįĩąåˆã§ããžã™īŧˆåå‰äģ˜ããŽåŧ•æ•°ã‚ˇã‚šãƒ†ãƒ ãŒã‚ればīŧ‰ã€‚ こぎようãĒįŠļæŗã§ã¯ã€ã‚ˇã‚šãƒ†ãƒ ã¯äģĨ前よりもさらãĢ少ãĒい゚ペãƒŧ゚で済ãŋぞす。

ぞた、フã‚ŖãƒŧãƒĢãƒ‰ã¨åŒã˜čĄŒãĢæŗ¨é‡ˆãŒã‚ることもæƒŗ像できぞす。 ã“ã‚Œã§å•éĄŒãŒį™ēį”Ÿã™ã‚‹ã“とはãĒいと思いぞす。

エク゚ポãƒŧトはåŸēæœŦįš„ãĢįˇ¨é›†č€…へぎå…Ŧ開キãƒŧワãƒŧドです
onreadyはåŸēæœŦįš„ãĢ、゚クãƒĒãƒ—ãƒˆãŒåŽŸčĄŒã•ã‚Œã‚‹å‰ãŽvaråŽŖč¨€ã§ã™ã€‚
ãŠãĄã‚‰ã‚‚æŗ¨é‡ˆãĢは遊しãĻいぞせん

さãĻ、あãĒたはおそらくæŗ¨é‡ˆãŒäŊ•ãŽãŸã‚ãĢあるぎかãĢついãĻ先å…ĨčĻŗを持ãŖãĻいるでしょう。 これらぎãƒĻãƒŧã‚šã‚ąãƒŧ゚はæŗ¨é‡ˆã‚ˇã‚šãƒ†ãƒ ãĢ厌全ãĢ遊合しãĻいると思いぞすīŧˆãã—ãĻ多くぎäēēがそうしãĻいるようãĢčĻ‹ãˆãžã™īŧ‰ã€‚ しかし、įĸēかãĢ、į§ã¯ãã‚Œãžã‚ŒãŽįŠļæŗãŒã‚ąãƒŧã‚šãƒã‚¤ã‚ąãƒŧã‚šã§č­°čĢ–されるずきだと思いぞす。

「įˇšã€ãŽč­°čĢ–がį‰šãĢč‰¯ã„ã¨ã¯æ€ã‚ãĒい。 æŗ¨é‡ˆã§1行ãĢč¤‡æ•°ãŽã‚šãƒ†ãƒŧãƒˆãƒĄãƒŗトīŧˆãžãŸã¯ã€Œãƒ—ãƒŦフã‚Ŗック゚」フりãƒŧムīŧ‰ã‚’į›´æŽĨč¨ąå¯ã—ãĒい場合でも、åŒē切り文字としãĻ;をäŊŋį”¨ã§ããžã™ã€‚

<strong i="7">@onready</strong> var my_sprite = $Sprite
@onready; var my_sprite = $Sprite


@export_hint_string("Attack,Defense")
@export_hint(ENUM) export var my_enum : int = 0

@export_hint_string("Attack,Defense")
@export_hint(ENUM); export var my_enum : int = 0


<strong i="8">@export_hint_string</strong> "Attack,Defense";
<strong i="9">@export_hint</strong> ENUM export var my_enum : int = 0

<strong i="10">@export_hint_string</strong> "Attack,Defense"
<strong i="11">@export_hint</strong> ENUM; export var my_enum : int = 0


<strong i="12">@export</strong> type=String hint=MULTILINE; var my_text = ""

# more options

@export(type = String, hint = MULTILINE) var my_text = ""
@export(type = String, hint = MULTILINE); var my_text = ""

@export(String, hint = MULTILINE) var my_text = ""

# I personally prefer this one (positional and named args supported, default/optional args too)
@export(String, MULTILINE) var my_text = ""
@export(String, hint = MULTILINE) var my_text = ""
@export(type = String, hint = MULTILINE) var my_text = ""
@export(int, ENUM, "Attack,Defense") var my_enum:= 0

įˇ¨é›†īŧšã‚あ、į§ã¯é…すぎぞした、 @ groudはすでãĢčĄŒãŽč­°čĢ–ãĢ取りįĩ„んでいぞす。 ぞあ、少ãĒくともそれらぎいくつかぎã‚ŗãƒŧド䞋は、こぎ゚ãƒŦッドãĢäŊ•ã‹ã‚’čŋŊ加しぞした。

それはあãĒãŸãŸãĄãŽæ„čĻ‹ã§ã™ã€‚
個äēēįš„ãĢは@は醜いと思いぞす

įˇ¨é›†īŧš
ã§ã¯ã€ãƒĄãƒŗバãƒŧåŽŖč¨€ã¯ãŠãŽã‚ˆã†ãĢ抟čƒŊしぞすかīŧŸ
そうすることは恐ろしいでしょう

<strong i="10">@description</strong> "Adds two numbers and returns the result."
<strong i="11">@parameter</strong> name=num1 type=float description="The first number"
<strong i="12">@parameter</strong> name=num2 type=float description="The second number"
<strong i="13">@returns</strong> type=float description="num1 and num2 added together"
func add(num1, num2):
    return num1 + num2

@descriptionぎ最初からfuncぎ最初ぞで折りたたむことができãĒかãŖた場合を除きぞす

ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗはã‚ŋイプをįŊŽãæ›ãˆã‚‹ã“とを意å›ŗしたもぎではãĒいと思いぞすīŧˆã‚ãĒたぎ䞋ぎようãĢīŧ‰ã€‚ ドキãƒĨãƒĄãƒŗトぎæŗ¨é‡ˆãŒåŋ…čĻãĒい場合は、それらをäŊŋį”¨ã™ã‚‹åŋ…čĻã¯ã‚りぞせん。

func add(num1: float, num2: float) -> float: return num1 + num2

ã“ãŽæˇˇäšąã¯ã€į§ãŒįŸĨる限り、原際ぎ型をäŊŋį”¨ã§ããĒいエク゚ポãƒŧトヒãƒŗトぎį†æƒŗįš„ã¨ã¯č¨€ãˆãĒいįŠļæŗãĢčĩˇå› ã—ãĻいる可čƒŊ性がありぞすīŧˆãã—ãĻ、銚くずきことãĢ、配列ãĒおぎ一部ぎ型ぎã‚ĩポãƒŧトを銚くãģおエク゚ポãƒŧトするジェネãƒĒック型がãĒã„ã¨ã„ã†å•éĄŒīŧ‰ã€‚

個äēēįš„ãĢは@は醜いと思いぞす
ã§ã¯ã€ãƒĄãƒŗバãƒŧåŽŖč¨€ã¯ãŠãŽã‚ˆã†ãĢ抟čƒŊしぞすかīŧŸ
そうすることは恐ろしいでしょう

äģ–ãŽč¨€čĒžã§ã¯ã€ã“ぎį›Žįš„は通常、æŗ¨é‡ˆã§ã¯ãĒくã‚ŗãƒĄãƒŗãƒˆã‚’æäž›ã—ã€é€šå¸¸ã€ææĄˆã•ã‚ŒãŸã‚‚ãŽã¨åŒį­‰ã‹ãã‚ŒäģĨ上ãĢå†—é•ˇã§ã™ã€‚ C言čĒžãƒ•ã‚ĄãƒŸãƒĒãƒŧīŧˆæœ€ã‚‚äēēæ°—ãŽã‚ã‚‹č¨€čĒžīŧ‰ã§ã¯ã€ @はã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗãĢかãĒり一čˆŦįš„ですīŧˆãŸã¨ãˆã°ã€Java、JavaScript、TypeScript、Scala、そしãĻį§ãŒPythonをčĒ­ã‚“だもぎからもīŧ‰ã€‚

TypeScriptīŧˆãƒ‰ã‚­ãƒĨãƒĄãƒŗトぎ型はåŋ…須ではãĒく、ツãƒŧãƒĢは原際ぎ型をäŊŋį”¨ã§ãã‚‹ã¨æ€ã„ぞすīŧ‰īŧš

/** Adds two numbers and returns the result.
 * <strong i="16">@param</strong> num1 {float} The first number
 * <strong i="17">@param</strong> num2 {float} The second number
 * <strong i="18">@return</strong> {float} num1 and num2 added together
  **/
const add = (num1: number, num2: number): number => num1 + num2;

ãƒ•ã‚ĄãƒŗクぎようãĒå‘ŗīŧš

@description("Adds two numbers and returns the result.")
@parameter(num1, "The first number", type=float)
@parameter(num2, "The second number", type=float)
@returns("num1 and num2 added together", type=float)
func add(num1: float, num2: float) -> float:
    return num1 + num2

重複ã‚ŋイプãĒしīŧš

@description("Adds two numbers and returns the result.")
@parameter(num1, "The first number")
@parameter(num2, "The second number")
@returns("num1 and num2 added together")
func add(num1: float, num2: float) -> float:
    return num1 + num2

パãƒŦãƒŗãƒŦ゚フãƒŦãƒŧバãƒŧīŧš

<strong i="28">@description</strong> "Adds two numbers and returns the result."
<strong i="29">@parameter</strong> num1 "The first number"
<strong i="30">@parameter</strong> num2 "The second number"
<strong i="31">@returns</strong> "num1 and num2 added together"
func add(num1: float, num2: float) -> float:
    return num1 + num2

į§ã¯ã“ぎ構文がドキãƒĨãƒĄãƒŗトã‚ŗãƒĄãƒŗトãĢ最遊です。 ドキãƒĨãƒĄãƒŗトäģĨ外ぎã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗãĢはfuncぎようãĒ構文をäŊŋį”¨ã—たいぎで、ドキãƒĨãƒĄãƒŗト化ぎį›Žįš„でã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗをäŊŋį”¨ã™ã‚‹ã“とãĢついãĻはぞだįĸēäŋĄãŒæŒãĻぞせん。

前ぎ䞋ぎæŗ¨é‡ˆåã‚’äŊŋį”¨ã—ぞした。 @parameterはäģ–ãŽč¨€čĒžã¨åŒã˜ã‚ˆã†ãĢ単į´”ãĢ@param 、 @descriptionは@desc 、 @descrぞたは@func 。

GodoDocでは、TypeScriptīŧˆãã‚Œč‡ĒäŊ“はJSDocとJavadocãĢåŸēãĨくTypeDocīŧ‰ãĢåŸēãĨく構文をäŊŋį”¨ã—ãĻいぞすが、į§ãŽæ„čĻ‹ã§ã¯ã€éžå¸¸ãĢうぞく抟čƒŊしãĻいるようです。

## Same as [[bool_]], but `on_false`/`on_true` are functions.
## Only selected function will be called and its return value will be returned from `bool_lazy`.
## <strong i="44">@typeparam</strong> T {any} Return type
## <strong i="45">@param</strong> cond {bool} Condition
## <strong i="46">@param</strong> on_false {FuncLike<T>} Function to call and return its result when `cond` is `false`
## <strong i="47">@param</strong> on_true {FuncLike<T>} Function to call and return its result when `cond` is `true`
## <strong i="48">@return</strong> {T}
func bool_lazy_(cond: bool, on_false, on_true): return GGI.bool_lazy_(cond, on_false, on_true)
var bool_lazy = funcref(self, "bool_lazy_")

@descriptionぎ先頭からfuncぎ先頭ぞで

はい、一čˆŦįš„ãĢ折りį•ŗãŋとデフりãƒĢトぎ折りį•ŗãŋぎã‚Ēãƒ—ã‚ˇãƒ§ãƒŗはエデã‚Ŗã‚ŋãƒŧへぎį´ æ™´ã‚‰ã—いčŋŊ加ですīŧˆãŸã¨ãˆã°ã€å†…部クナ゚がデフりãƒĢãƒˆã§æŠ˜ã‚ŠãŸãŸãžã‚Œã‚‹č¨­åŽšã§æœ‰åŠšãĢできるãĒお、ブロックぎã‚ŋイプãĢåŸēãĨいãĻ折りį•ŗãŋぞすīŧ‰ã€‚

æŗ¨é‡ˆã‚’前ぞたは上ãĢ配įŊŽã™ã‚‹æŠŸčƒŊがåĨŊきです。こぎため、 @annotation(a, b)はäžŋåˆŠã§ã€ãƒ‘ãƒŠãƒĄãƒŧã‚ŋが指厚されãĻいãĒã„å ´åˆã¯č§’ã‹ãŖこはã‚Ēãƒ—ã‚ˇãƒ§ãƒŗです。 exportとonreadyがプロパテã‚Ŗで非常ãĢ一čˆŦįš„ã§ã‚ã‚‹ã“ã¨ã‚’č€ƒãˆã‚‹ã¨ã€å‰ãĢįŊŽãã“とができるぎで、äģŠæ—Ĩぎキãƒŧワãƒŧドと同じ速åēĻで書くことができぞす。

ただし、äŊŋį”¨æŗ•ãĢé–ĸしãĻは、ドキãƒĨãƒĄãƒŗトもåĢŒã„です。 į§ã¯ãƒ—ログナムãĢåŊąéŸŋを与えるæŗ¨é‡ˆãĢæ…ŖれãĻいぞすがīŧˆé–“æŽĨįš„であãŖãĻもīŧ‰ã€ãƒ‰ã‚­ãƒĨãƒĄãƒŗトはã‚ŗãƒĄãƒŗトぎようãĢäŊŋį”¨ã™ã‚‹ãŸã‚ãĢそぎ量を3倍ãĢすることが多く、そぎ垌おこãĢã§ã‚‚čĄ¨į¤ēされ、抟čƒŊįš„ãĒæŗ¨é‡ˆã¨åŒã˜ã‚ˆã†ãĢåŧˇčĒŋ襨į¤ēされぞす...それはäŊ•ã‹ãĢ遊合しぞせんそぎãƒĻビキã‚ŋ゚。 åŸēæœŦįš„ãĢ、į§ã¯Cīŧƒã§čĻ‹ã‚‰ã‚Œã‚‹ãŽã¨åŒã˜æŗ¨é‡ˆãŽäŊŋį”¨æŗ•ãŒåĨŊきです。これãĢã‚ˆã‚Šã€ãƒĄãƒŗバãƒŧぎ上ãĢæŗ¨é‡ˆã‚’書きčžŧむåŋ…čĻãŒã¯ã‚‹ã‹ãĢ少ãĒくãĒりぞすīŧˆé€šå¸¸ã€æŗ¨é‡ˆã¯éžå¸¸ãĢぞれであり、いくつかぎ䞋がį¤ēすようãĢã€å…¨å“ĄãŒ5čĄŒã‚’æ›¸ãčžŧむåŋ…čĻã¯ã‚りぞせんīŧ‰ã€‚ 。 č­°čĢ–が゚クãƒĒプトドキãƒĨãƒĄãƒŗトを指厚するためぎAPIを持たãĒいGodotãĢé–ĸã™ã‚‹ã‚‚ãŽã§ã‚ã‚‹å ´åˆã€ãã‚Œã¯å•éĄŒã§ã‚ã‚Šã€æŗ¨é‡ˆIMOだけでč§Ŗæąēすることはできぞせん。 少ãĒくとも、それをã‚Ēãƒ—ã‚ˇãƒ§ãƒŗでäŊŋį”¨ã§ãã‚‹ã¨æ€ã„ぞすが、こぎようãĢåŧˇåˆļされたくはありぞせん。これは、æœŦæ ŧįš„ãĒドキãƒĨãƒĄãƒŗトãĢは不äžŋです。 īŧˆã•ã‚‰ãĢ、゚クãƒĒプトはGDScriptだけではãĒく、 _get_property_listをäŊŋį”¨ã™ã‚‹ã‚¨ãƒƒã‚¸ã‚ąãƒŧ゚はこれをさらãĢ厄äģ‹ãĢしぞすīŧ‰

į§ã¯ã‚ãĒたぎZylannãĢ厌全ãĢ同意すると思いぞす。 į§ã¯å€‹äēēįš„ãĢ、キãƒŧワãƒŧドぎようãĒエク゚ポãƒŧトīŧˆãžãŸã¯ã‚ĒãƒŗãƒŦデã‚Ŗīŧ‰ãŽãŸã‚ãĢそぎようãĒæ§‹æ–‡ã‚’č¨ąå¯ã—ãžã™īŧš

# No parenthesis when there are no parameters
<strong i="6">@export</strong> var myvar
# With parenthesis for parameters
@export(ENUM, "Up,Down,Left,Right") var myvar2
# Being able to write the annoation on the line before
@export(ENUM, "Up,Down,Left,Right") 
var myvar2

ドキãƒĨãƒĄãƒŗトぎ部分ãĢé–ĸしãĻは、構文をさらãĢ単į´”化しぞすīŧˆ @mnnぎ䞋を

<strong i="11">@description</strong> "Adds two numbers and returns the result."
<strong i="12">@parameter</strong> "The first number" # No need to name the args if they are ordered
<strong i="13">@parameter</strong> "The second number"
<strong i="14">@returns</strong> "num1 and num2 added together"
func add(num1: float, num2: float) -> float:
    return num1 + num2

ただし、ドキãƒĨãƒĄãƒŗトをäģ–ぎ場所ãĢ書きčžŧむことができるようãĢ、åˆĨãŽã‚ˇã‚šãƒ†ãƒ ã‚’é–‹į™ēすることがåŋ…須であることãĢ同意しぞす。 jsonでは、XMLãžãŸã¯æœ€åˆãŽãƒ•ã‚Ąã‚¤ãƒĢã¨č¨€ã„ãžã™ã€‚ ã‚ŗãƒŧド内ぎドキãƒĨãƒĄãƒŗトはすずãĻぎプロジェクトãĢ遊合するわけではありぞせん。ドキãƒĨãƒĄãƒŗトぎためだけãĢ多くぎæŗ¨é‡ˆã‚’čŋŊ加すると、į…Šã‚ã—くãĒり、場合ãĢよãŖãĻはã‚ŗãƒŧドがčĒ­ãŋãĢくくãĒる可čƒŊ性があることãĢ同意しぞす。

é–ĸé€Ŗ性ぎためぎãƒĒãƒŗクīŧšgodotengine / godot-proposalsīŧƒ177

パãƒŧテã‚ŖãƒŧãĢはかãĒり遅れぞしたが、プナグイãƒŗぎ開į™ēãĢãƒĄã‚ŋデãƒŧã‚ŋとãƒĒフãƒŦã‚¯ã‚ˇãƒ§ãƒŗãĢ大きく䞝存しãĻいる開į™ēč€…ã¨ã—ãĻ、ã‚ĸノテãƒŧã‚ˇãƒ§ãƒŗがgodotぎもぎãĢãĒることをæœŦåŊ“ãĢ望んでいぞす。

いくつかぎもぎīŧˆã‚¨ã‚¯ã‚šãƒãƒŧトやã‚ĒãƒŗãƒŦデã‚ŖぎもぎãĒおīŧ‰ãŒã‚ˆã‚ŠįžŽã—くãĒると思いぞすが、į§ãŽä¸ģãĒč­°čĢ–は、æŗ¨é‡ˆã‚’最大限ãĢæ´ģį”¨ã§ãã‚‹ã‚Ģã‚šã‚ŋムプナグイãƒŗãĢついãĻです。

onreadyキãƒŧワãƒŧドとそぎåˆļ限ãĢついãĻ。

ãģとんおぎäēēは、ノãƒŧド参į…§ã‚’旊いæŽĩ階で初期化するためãĢonreadyをäŊŋį”¨ã—ãĻã„ã‚‹ã¨č¨€ãŖãĻã‚‚éŽč¨€ã§ã¯ã‚ã‚Šãžã›ã‚“ã€‚ _readyäžå­˜ã™ã‚‹ã„ãã¤ã‹ãŽã‚ˇãƒŧãƒŗをイãƒŗã‚šã‚ŋãƒŗ゚化すると、 null参į…§ãŽå•éĄŒãĢ遭遇する可čƒŊæ€§ãŒã‚ã‚‹ãŸã‚ã€é•ˇæœŸįš„ãĢã¯å•éĄŒãŒãĒければ原įžã§ããĒい可čƒŊ性があることを除いãĻīŧš

func explode():
    var bomb = preload("res://explosion.tscn").instance()
    # Oops, forgot to `add_child(bomb)` earlier
    bomb.fuse.wait_time = 5.0 # ERROR: fuse is `null`
    add_child(bomb)
    # ... because `fuse` is a $Timer node 
    # which is only initialized once added to the scene tree.

ã‚‚ãĄã‚ã‚“ã€ fuseã‚’č¨­åŽšã™ã‚‹å‰ãĢ、イãƒŗã‚šã‚ŋãƒŗã‚šåŒ–ã•ã‚ŒãŸã‚ˇãƒŧãƒŗをadd_child()するåŋ…čĻãŒã‚ã‚Šãžã™ãŒã€ã‚ˇãƒŧãƒŗãŒã‚ˇãƒŧãƒŗツãƒĒãƒŧãĢčŋŊ加される前ãĢ、äģ–ぎノãƒŧド/ã‚Ēブジェクトがæ­ŖįĸēãĒヒãƒĨãƒŧã‚ēをčĒč­˜ã™ã‚‹åŋ…čĻãŒã‚る場合はおうでしょうか。 īŧŸ

しばらくしãĻ、 httpsīŧš //github.com/godotengine/godot/issues/33620#issuecomment-559999681でčĒŦ明されãĻいるč§Ŗæąēį­–ã‚’čĻ‹ã¤ã‘ぞした。 お気ãĨきかもしれぞせんが、 onreadyはNOTIFICATION_READY 、原際ãĢåŋ…čĻãĒぎはNOTIFICATION_INSTANCEDで、参į…§ã‚’さらãĢ旊く初期化しぞす。 å”¯ä¸€ãŽå•éĄŒã¯ã€ oninstancedキãƒŧワãƒŧドがãĒいことです。そしãĻ、į§ãŒäŊ•ãĢつãĒがãŖãĻいるぎかį†č§Ŗできると思いぞす。 🙂

したがãŖãĻ、゚クãƒĒãƒ—ãƒˆč¨€čĒžã‚’č‚Ĩ大化させることãĒく、 @oninstanced抟čƒŊを備えたäģ–ぎいくつかぎã‚ŗãƒŧナãƒŧã‚ąãƒŧã‚šīŧˆã„つもぎようãĢīŧīŧ‰ã‚‚ã‚ĩポãƒŧトしãĒがら、 onreadyキãƒŧワãƒŧドをæŗ¨é‡ˆã¨ã—ãĻ原際ãĢäŊœã‚Šį›´ã™ãŽã¯č‰¯ã„ことだと思いぞす、およãŗ初期化ãĢé–ĸé€Ŗするäģ–ぎ通įŸĨぎã‚ĩポãƒŧトをčŋŊ加しぞすīŧˆ _init 、 _enter_treeãĒおīŧ‰ã€‚

é–ĸé€Ŗã™ã‚‹ææĄˆīŧšgodotengine / godot-proposalsīŧƒ260。

ã‚ˆã‚Šå…ˇäŊ“įš„ãĒčŠŗį´°ã‚’åĢã‚€ææĄˆã‚’é–‹ããžã—ãŸīŧš https īŧš

ä¸Šč¨˜ãŽææĄˆãĢ取ãŖãĻäģŖわられぞした。

こぎペãƒŧジはåŊšãĢįĢ‹ãĄãžã—たかīŧŸ
0 / 5 - 0 評価