2019/10/23 (Wed) に開催された Roppongi.unity #5 にて発表した「UniFlow - Visual Programming Framework for Unity」の紹介スライドです。
גࣜձࣾΩοζελʔ$50ɹ࠸6OJ'MPX 8FE3PQQPOHJVOJUZJOϝϧΧϦBUຊώϧζdਓྨΛίϯύΠϧ͔࣌ؒΒղ์͢ΔdSPQQPOHJVOJUZ7JTVBM1SPHSBNNJOH'SBNFXPSLͷ͝հ
View Slide
͜ΜΜʂ
wηογϣϯ֓ཁw6OJ'MPXͷ֓ཁw6OJ'MPXͷΠϯετʔϧw6OJ'MPXͷ͍ํw6OJ'MPXͷ֦ுw·ͱΊΞδΣϯμ
wηογϣϯ֓ཁw6OJ'MPXͷ֓ཁw6OJ'MPXͷΠϯετʔϧw6OJ'MPXͷ͍ํw6OJ'MPXͷ֦ுw·ͱΊΞδΣϯμΠϚίί
ࠓͷ-5ʹ͍ͭͯηογϣϯ֓ཁεϥΠυ ಈը6OJUZ-FBSOJOH.BUFSJBMTʹͯެ։༧ఆ
w$Λॻ͔ͣʹॲཧΛ࣮͍ͨ͠ਓw%PNBJOͱ7JFXΛΓ͚ͨઃܭΛ͍ͨ͠ਓw6OJUZͷίϯύΠϧΛ͍ͬͯΔؒʹ;ͱ5XJUUFSΛݟ͍ͯͨΒ࣌ؒ͘Β༹͍͔ͨ͜͠ͱ͕͋Δਓࠓͷରऀηογϣϯ֓ཁ
w6OJ'MPXͷհw6OJ'MPXΛ༻͍ͨσϞࠓ͢ίτηογϣϯ֓ཁ
w"TTFU4UPSFͰൢച͞Ε͍ͯΔ"SCPS#PMUͳͲʹ͍ͭͯw6OJUZҎ߱Ͱࡌ͞ΕΔ༧ఆͷ7JTVBM4DSJQUJOHػೳʹ͍ͭͯࠓ͞ͳ͍ίτηογϣϯ֓ཁ
ηΫγϣϯλΠτϧw+PC$50BU,JET4UBS*ODw'BNJMZ࠺ɾ່w6OJUZྺw!NPOSZwBLBΜΓ͌ઌੜ9ࣗݾհηογϣϯ֓ཁ
ࣗݾհ"XBSEηογϣϯ֓ཁ.JDSPTPGU.71GPS%FWFMPQFS5FDIOPMPHJFT6OJUZ"NCBTTBEPS
ࣗݾհ+PCηογϣϯ֓ཁະबֶࣇʙখֶߍֶ͚ͷ৬ۀମݧΞϓϦʮͬ͜͝ϥϯυʯΛҎ্ʹΘͨΓ։ൃɾӡӦ
ηΫγϣϯλΠτϧwΩοζελʔֶशா1JYJW#005)ʹͯධൢചதʂw"TTFU#VOEMFw։ൃൿwւ֎ۈͷ͓͠wษڧձ։࠵w"OESPJEࣗಈςετw7FDUPS(SBQIJDT12ࣗݾհ13IUUQTLJETTUBSUCGCPPUIQNηογϣϯ֓ཁ
ࣗݾհ13ηογϣϯ֓ཁ#ͷϥδ ύʔιφϦςΟͬͯ·͢ʂήετืूதʂ
6OJ'MPXͷ֓ཁ
֓ཁ6OJ'MPXͷ֓ཁ6OJ'MPXॲཧͷஞ࣮࣍ߦ(SBQI7JFXΠϕϯτͪड͚044γάφϧʹΑΔυϝΠϯଓ
ॲཧͷஞ࣮࣍ߦ6OJ'MPXͷ֓ཁwʮ˓˓Λͨ͠Βɺ˘˘Λ͢Δʯͱ͍͏ॲཧΛचͭͳ͗ʹ࣮ߦwશͯͷใ4FSJBMJ[F͞Εͯอ࣋͞ΕΔʢ4DFOF1SFGBCʣw"TTFU#VOEMF"EESFTTBCMFʹରԠ
Πϕϯτͪड͚6OJ'MPXͷ֓ཁwʮϘλϯ͕λοϓ͞ΕͨΒʯʮఢػʹࣗػ͕Ϳ͔ͭͬͨΒʯͱ͍ͬͨɺΠϕϯτॲཧʹରԠwجຊతͳΠϕϯταϙʔτࡁw"VEJP "OJNBUJPO 5JNFMJOFͷ࠶ੜऴྃͪͳͲ͋Γ
γάφϧʹΑΔυϝΠϯଓ6OJ'MPXͷ֓ཁw1VSF$Ͱ࣮͞ΕΔυϝΠϯॲཧͱͷڥքΛڮ͢͠ΔͨΊͷ4JHOBMͱ͍͏ΈΛ࣮ࡁw6OJ'MPXίϯϙʔωϯτؒͷଓʹར༻Մೳ
(SBQI7JFX6OJ'MPXͷ֓ཁw6*&MFNFOUTͷ(SBQI7JFXΛ༻͍ͨϏδϡΞϥΠζw&YQFSJNFOUBM͍ͭ֎ΕΔͷ͔͠ΒʜʁwҰఆͷϧʔϧʹԊͬͨίϯϙʔωϯτΛ࡞Δ͜ͱͰ֦ு༰қ
0QFO4PVSDF4PGUXBSF6OJ'MPXͷ֓ཁw044ͱͯ͠(JU)VCͷ1VCMJD3FQPTJUPSZͰ։ൃதw⭐͍ͩͬ͘͞ʂw .*5-JDFOTFΛઃఆ͍ͯ͠·͢
6OJ'MPXͷΠϯετʔϧ
Πϯετʔϧ6OJ'MPXͷΠϯετʔϧ
w6OJUZ1BDLBHF.BOBHFSʢಠࣗϨδετϦʣʹͯఏڙwݱࡏWQSFWJFX͕ఏڙΠϯετʔϧ6OJ'MPXͷΠϯετʔϧ
Πϯετʔϧ6OJ'MPXͷΠϯετʔϧ{"dependencies": {"com.unity.2d.sprite": "1.0.0","com.unity.2d.tilemap": "1.0.0",// ..."com.unity.modules.wind": "1.0.0","com.unity.modules.xr": "1.0.0"},"scopedRegistries": [{"name": "Unofficial Unity Package Manager Registry","url": "https://upm-packages.dev","scopes": ["com.stevevermeulen","jp.cysharp","dev.monry","com.unity.simpleanimation","dev.upm-packages"]}]}Packages/manifest.json
6OJ'MPXͷ͍ํ
6OJ'MPX(SBQI6OJ'MPXͷ͍ํ
%&.06OJ'MPXͷ͍ํ
6OJ'MPXͷ֦ு
wConnectorBaseΛܧঝwpublic override IObservableOnConnectAsObservable()ʹϝοηʔδ͕ྲྀΕ͖ͯͨ࣌ͷॲཧΛॻ͘$POOFDUPS#BTF6OJ'MPXͷ֦ு
wIMessageComposableΛ࣮wग़ྗ͢ΔͱΩʔͷϦετΛฦ͢ग़ྗ6OJ'MPXͷ֦ு
ग़ྗ6OJ'MPXͷ֦ுIEnumerableIMessageComposable.GetMessageComposableAnnotations(){return new[]{ComposableMessageAnnotationFactory.Create(() => Result,"SomeOutput"),};}
wIMessageCollectableΛ࣮wೖྗՄೳͳܕͱΩʔͱॲཧͷϦετΛฦ͢wCollectorͱ͍͏ಛघͳΫϥεΛ௨ͯ͠Λճऩ͢Δೖྗ6OJ'MPXͷ֦ு
ೖྗ6OJ'MPXͷ֦ுIEnumerableIMessageCollectable.GetMessageCollectableAnnotations(){return new[]{CollectableMessageAnnotationFactory.Create(SourceCollector,x => Source = x,nameof(Source)),};}
·ͱΊ
·ͱΊ·ͱΊw6OJ'MPXΛ͏ͱ$Λॻ͔ͣʹ৭ʑͳॲཧΛ࣮Ͱ͖Δʂw6OJUZͰͰ͖Δίτ6OJ'MPXͰɺͰ͖ͳ͍ίτ$Ͱɻw(JU)VC4UBS͚ͯͶͬʂ
ҙࣄ߲·ͱΊwݱࡏͷόʔδϣϯv0.1.0-preview.34.1Ͱ͢ɻwେ҆ఆ͖ͯ͠·͕ͨ͠ɺࠓޙഁյతมߋ͕ೖΔՄೳੑ͕͋Γ·͢ɻwͷೖग़ྗͷॲཧվળ༧ఆ͋Γ
"QQFOEJYw,JET4UBS5FDI/PUFw https://kidsstar-tbf.booth.pm/w6OJ'MPX(JU)VCw https://github.com/monry/UniFloww6OJ'MPX:PV5VCFw Πϯετʔϧฤw ͍ํฤ
5IBOLZPVGPSZPVSBUUFOUJPO