Slide 1

Slide 1 text

URLCachingͷ࿩ • twitter:@toru_inoue • github:sassembla • Autoya͍ͬͯ͏Unity Framework ࡞ऀ • ࠷ۙ͸IRIAMͬͭʔ഑৴αʔϏε΍ͬͯ·͢ (͓ख఻͍తͳҙຯͰ)

Slide 2

Slide 2 text

Autoya/ URLCaching ࠓ೔࿩͢͜ͱ

Slide 3

Slide 3 text

Unityͷৗࣝ AssetBundleͱ͔࡞Βͳ͍ͱ ΞηοτΛߋ৽Ͱ͖ͳ͍ɻ URLCaching͸ɺ͜ͷ෦෼ʹ ઈົʹޮ͘ɻ

Slide 4

Slide 4 text

URLCaching

Slide 5

Slide 5 text

URLCaching ABҎ֎ͷσʔλΛDLͨ͠Γ͠ͳ ͔ͬͨΓͯ͠୺຤ʹΩϟογϡɺ ద౰ͳAssetͷܗͰར༻Ͱ͖Δ Autoyaͷ1ػೳɻ

Slide 6

Slide 6 text

URLCaching 1.Web͔ΒσʔλΛऔಘͯ͠ϑΝΠϧԽɺΩϟογϡ Web Device Binary (file cache) byte[ ] DL store

Slide 7

Slide 7 text

URLCaching 1.Web͔ΒσʔλΛऔಘͯ͠ϑΝΠϧԽɺΩϟογϡ 2.޷͖ͳܕʹม׵ͯ͠औΓग़͠ɺΦϯϝϞϦʹΩϟογϡ byte[ ] Device Unity Asset (on memory cache) Binary (file cache) load convert

Slide 8

Slide 8 text

URLCaching 1.Web͔ΒσʔλΛऔಘͯ͠ϑΝΠϧԽɺΩϟογϡ 2.޷͖ͳܕʹม׵ͯ͠औΓग़͠ɺΦϯϝϞϦʹΩϟογϡ 3.ద౰ͳ୯ҐͰύʔδͨ͠Γ 4.URLʹରͯ͠ΫΤϦͷมߋͰσʔλΛߋ৽Ͱ͖Δ https://somewhere/image.png?hash=e9e07ad Query

Slide 9

Slide 9 text

URLCaching 4.URLʹରͯ͠ΫΤϦͷมߋͰσʔλΛߋ৽Ͱ͖Δ https://somewhere/image.png?hash=e9e07ad

Slide 10

Slide 10 text

URLCaching 4.URLʹରͯ͠ΫΤϦͷมߋͰσʔλΛߋ৽Ͱ͖Δ https://somewhere/image.png?hash=e9e07ad https://somewhere/image.png?hash=kjas80a5 ಉ͡URLͰΫΤϦ෦෼Λม͑ΔͱɺΩϟογϡࡁΈͷ σʔλʹ͍ͭͯɺurl͔Βͷ࠶औಘΛߦ͏(ߋ৽)ɻ

Slide 11

Slide 11 text

API public static void Persist_URLCaching_Load( string domain, string url, Func bytesToTConverter, Action onLoaded, Action onLoadFailed, Dictionary requestHeader=null) where T : UnityEngine.Object ͜ͷϝιουҰൃͰɺURLCachingͷ͢΂ͯΛ࣮ߦɻ

Slide 12

Slide 12 text

public static void Persist_URLCaching_Load( string domain, string url, Func bytesToTConverter, Action onLoaded, Action onLoadFailed, Dictionary requestHeader=null) where T : UnityEngine.Object urlͱ͔ byte[] to Tܕม׵ࣜηοτ࣮ͯ͠ߦ →(ඞཁͳΒurl͔ΒσʔλΛDL) →Tܕσʔλͱͯ͠ඇಉظల։ɻ API

Slide 13

Slide 13 text

bytes => { var tex = new Texture2D(1, 1); tex.LoadImage(bytes); var newSprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(.5f, .5f)); return newSprite; } Func bytesToTConverter ྫ byte[]͔ΒSpriteΛੜ੒ͯ͠ฦ͢ͱ͔ͩͱ ͳײ͡ɻ

Slide 14

Slide 14 text

࣮༻ྫ ഑৴ऀը૾Ұཡ

Slide 15

Slide 15 text

࣮༻ྫ ഑৴ऀը૾Ұཡ ഑৴ऀ͞Μ௒ͨ͘͞Μ͍Βͬ͠ΌΔɻ ը૾ͷߋ৽΋഑৴ऀ͞Μଆɻ มߋ͕͋Δͨͼʹશ෦ABԽ͢Δ? Noͩɺ͠ΜͲ͍ɻ →URLCachingͰղܾɻ

Slide 16

Slide 16 text

࣮༻ྫ ࢹௌऀϥϯΩϯά

Slide 17

Slide 17 text

࣮༻ྫ ࢹௌऀϥϯΩϯά Ϣʔβʔʹ΋ΞΠίϯͱ͔͋ͬͯ ͜Ε͕·ͨશһࣗ༝ʹߋ৽Ͱ͖Δɻ ͜͜ͰURLCachingɻ Ϣʔβʔ͕ը૾Λߋ৽͢Δͨͼ URLͷquery෦෼͕มΘͬͯɺ ͍͍ײ͡ʹը૾͕ߋ৽ɺΩϟογϡɻ

Slide 18

Slide 18 text

• ແਚଂʹσʔλ͕૿͑Δ • ແݶʹσʔλ͕ߋ৽͞ΕΔ • AssetBundleʹ͸ͨ͘͠ͳ͍/Ͱ͖ͳཻ͍౓ • APIͱ͔͔ΒURL͕΋Β͑Δ URLCaching͕޲͍ͯΔͱ͜Ζ

Slide 19

Slide 19 text

URLCaching͕޲͍ͯΔͱ͜Ζ Pros: ɾURL͕͋Ε͹Ξηοτ͕औಘͰ͖Δ ɾΩϟογϡͰ͖Δ ɾABͷΑ͏ͳϏϧυෆཁ(ѹॖͱ͔͢ΔͳΒผ) ɾURLύϥϝʔλ࣍ୈͰߋ৽Ͱ͖Δ (AssetBundle <<< खܰ͞ͷน <<< URLCaching)

Slide 20

Slide 20 text

URLCaching͕޲͍ͯΔͱ͜Ζ Cons: ɾURL͕ඞਢ(ͭ·Γ୭͔͕URLΛฦ͢ඞཁ͕) ɾల։࣌ʹ΍ͬͺϝϞϦ৯͏(࠷దͳABʹউͯͳ͍) ɾCRCνΣοΫͱ͔ແ͍ͷͰਓྗ(broken or not) ɾABͱಉ༷Unload͢Δͷ͸ਓྗ (AssetBundle >>> ࣮ߦޮ཰ͷน >>> URLCaching)

Slide 21

Slide 21 text

Happy URLCachingʂ

Slide 22

Slide 22 text

Unityͷ2017͋ͨΓ͔Β௥Ճ͞ΕͨAPIͰɺDownloadHandlerFile ͱ͍͏ͷ͕͋ͬͯɻ https://docs.unity3d.com/ScriptReference/Networking.DownloadHandlerFile.html URLCachingʹ࢖͍ͬͯΔɻ ͜ΕΛ࢖͏ͱɺUnityͷC#ϨΠϠΛ伵·ͣ͞ʹωΠςΟϒͷϑΝΠϧγεςϜʹରͯ͠μΠϨΫτʹ Web͔ΒDLͨ͠ϑΝΠϧΛੜ੒Ͱ͖Δɻ ͭ·Γ Web -> C# -> ϑΝΠϧγεςϜ Ͱ͸ͳ͘ɺ Web -> ϑΝΠϧγεςϜ ͱ΍Δ͜ͱͰɺͳΜͱ͍͏͔ແବͳ౒ྗΛফͤΔɻ ͪͳΈʹϚδͰC#্ʹσʔλΛల։͠ͳ͍ͨΊɺWebRequestͷdataͱ͔Λಡ΋͏ͱ͢Δͱ Unsupported PlatformΤϥʔ͕ͰΔపఈͬ΀Γɻ ಠࣗʹAssetBundleΛDL͢Δͷʹ΋࢖͑Δɻ ͳʹΑΓUnity͕ϝϯςͯ͘͠ΕΔωΠςΟϒϨΠϠͷૢ࡞Λߦ͑ΔAPIͳͷͰɺ ࠓ·ͰʮUnityͰWeb͔ΒԿ͔ΛDL͢ΔͱσʔλͷίϐʔͰϝϞϦ͕ʙʯΈ͍ͨͳ໰୊Λײͯͨ͡ਓʹ ͏͚ͬͯͭɻ ͓·͚:εςΩٕज़ʹ͍ͭͯ

Slide 23

Slide 23 text

͓·͚ͷ͓·͚ URLCaching͸CDNͱ͔Ͱ࢖͑ΔTemporaryURLͷ ར༻΋αϙʔτ͍ͯ͠Δɻ ύοͱݴ͏ͱɺΩʔͱURLΛผʹ࣋ͭ͜ͱ͕Մೳɻ Ωʔ಺ͷΫΤϦ͕มΘͬͨΒɺಉ͡Ωʔʹରͯ͠ ผͷURL͔ΒσʔλΛDL͢Δɺͱ͍͏ڍಈ͕ Ͱ͖Δɻ