Upgrade to Pro — share decks privately, control downloads, hide ads and more …

お前はまだ本当のAssetBundleを知らない

Avatar for Toru Toru
March 24, 2019

 お前はまだ本当のAssetBundleを知らない

Unity製Appのリソースを更新するのに使えるAssetや運用例について紹介します。

Avatar for Toru

Toru

March 24, 2019
Tweet

More Decks by Toru

Other Decks in Programming

Transcript

  1. 2 ( ג ) K I S S A K

    I ୅ ද ɻ Toru Inoue 5XJUUFS!UPSV@JOPVF (JUIVCTBTTFNCMB ࡴҙۦಈ։ൃͱ͍͏)/Ͱ 6OJUZήʔϜ΍ͦΕҎ֎Λɹ ؤுͬͨΓ ؤுΒͳ͔ͬͨΓͯ͠Δɻ
  2. ίʔυ͔Βੜ੒Ͱ͖Δ"TTFU [{ "command": “generateGO”, // GameObjectΛ࡞ͬͯ "gOName": “SOMETHING” // ໊લΛSOMETHINGʹͯ͠

    }, { "command": “addComponent”, "componentName": “NAME” // NAME͍ͬͯ͏componentΛηοτʂ }] ͜ΜͳjsonΛड͚औͬͨΒɺ͜͏͍͏ײ͡ͷૢ࡞Λ͢ΔίʔυΛॻ͘ʂʂ ׬શͳ࣮૷࿹ྗͷੈքɻVRMͱ͔͍͢͝ΑͶɻ
  3. 2 9 64"࢖͏ͳΒ"TTFU#VOEMFͳΜͰ͚͢Ͳʂ NameList AssetBundle MyNameIsA { l͜ͷ"#ʹ͸ .Z/BNF*T"͕ ೖ͍ͬͯ·͢z

    ༨ஊ͜ͷ༻్ͷͨΊʹNBOJGFUϑΝΠϧ͕͋ΔΜ͕ͩɺ "EESFTTBCMFTͰ͢ΒNBOJGFTUΛ࢖ΘͣΧλϩά /BNF-JTU Λࣗ࡞ͯ͠Δɻ
  4. 6QEBUBCMF1SPT$POT 3 2 ࡞Γ΍͢͞ ϩʔυ Ωϟογϡ/ ࠩ෼औಘ ϝϞϦޮ཰ ؚΊΒΕΔ Asset

    USA NotBad VeryHard Good VeryGood 99% Bytes VeryGood VeryGood ࣗ࡞Մ ϊʔΨʔυ 1% Code Good VeryHard ࣗ࡞Մ ϊʔΨʔυ 70% ͣ͹ΓҰ௕Ұ୹ɻ
  5. 6QEBUBCMF1SPT$POT ಺༁ 3 3 ࡞Γ΍͢͞ ϩʔυ Ωϟογϡ/ ࠩ෼औಘ ϝϞϦޮ཰ ؚΊΒΕΔ

    Asset USA UnityϏϧυඞਢ AB͚ͩͰ͸ μϝ Ϧετ͕ɺɺ σϑΥϧτͰ ࣮૷͞ΕͯΔ Կ΋͠ͳ͍Ͱ ޮ཰ྑ͍ 99% Bytes Unityෆཁ byte[]͔Β new͢Δ͚ͩ ࣗ࡞Մ ϊʔΨʔυ 1% Code Unityෆཁɺ ϑΥʔϚοτ ఆٛେม ࣗ࡞͢Δͱ ԿͰ΋ग़དྷΔ ࣗ࡞Մ ϊʔΨʔυ 70% ͜͜Ͱ஫໨ͯ͠ཉ͍͠ͷ͸ɺ࡞Γ΍͢͞ͱϩʔυɻͨͿΜ"#͕Ұ൪ਏ͍ɻ
  6. 4 2 ϫϯύϯظ Ϧιʔε෼཭ظ དྷੈظ ϦιʔεΞοϓσʔτظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ લલલੈ લલੈ

    લੈ ݱੈ ڈ೥ ϞόΠϧҎલʜ ݹ͍ػೳ͕໓ͼΔ͜ͱ͸كͰɺ ͲΜͲΜ৽ػೳ͕௥Ճ͞ΕΔΠϝʔδɻ དྷੈ
  7. ඈ͹͍͍ͯ͠ ؾ͕͢Δ 4 9 ͍ͭʹ"QQʹ֎෦͔ΒσʔλΛೖ ΕΔνϟϯε͕౸དྷ͢Δ͕ɺ "QQ͕͍ͭɺͲ͜ʹΞΫηε͢Δ ͔͸·ͩϋʔυίʔυͩɻ ·ͩɺϦιʔε͕ΞϓϦ͔Β෼཭ ͞Ε͚ͨͩʹա͗ͳ͍ɻ

    "QQͰ࢖͏શϦιʔεΛऔಘ͢Δɻ Ϧιʔε෼཭ظ 63- ϋʔυίʔυʂ "QQͰ࢖͏ͷΛશ෦औಘ ݸͷϦιʔε͕͋ͬͨΒɺ ݸΛҰؾʹམͱ͢ɻ "QQʹอ࣋ɻ
  8. 5 1 ϫϯύϯظ Ϧιʔε෼཭ظ དྷੈظ ϦιʔεΞοϓσʔτظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ લલલੈ લલੈ

    લੈ ݱੈ ڈ೥ શ෦ೖΓɺ"QQ7FSߋ৽ ϞόΠϧҎલʜ ͭ͗͜͜ɻ ॳճىಈ࣌औಘɺ"QQ7FSߋ৽ શϦιʔεҰؾʹऔಘ དྷੈ
  9. 5 5 औಘ͕੒ޭͨ͠Βɺ"QQ಺ͷ 3FT7FSΛ৽͍͠΋ͷʹߋ৽ɻ ࣍ͷݕ஌ͰɺɺΈ͍ͨͳϧʔϓɻ Ϧιʔε Ξοϓσʔτظ ৽3FT7FSड͚औΓ 3FT7FSૹ෇ ੒ޭʂखݩͷ3FT7FSΛ৽3FT7FSʹߋ৽ɻ

    3FT7FSʹԠͨ͡ ϦιʔεΛฦ͢ ৽3FT7FSͰऔಘ αʔό͕஌ͬͯΔ ࠷৽ͷ3FT7FSͱ ҟͳΔͷͰɺ ࠷৽3FT7FSΛฦ͢ɻ 0O"QQ1BVTF
  10. ඈ͹͍͍ͯ͠ ؾ͕͢Δ 5 6 <Ұ౓ͷىಈதʹ ෳ਺ճͷΞοϓσʔτΛड͚औΔ> ͱ͍͏Մೳੑ͕͋ΔͨΊɺ Ξϓσͷ৘ใΛऔಘͨ͠Βڧ੍త ʹλΠτϧը໘ͱ͔ʹؼͬͯɺ શɾچϦιʔεͷղ์‎

    શɾ৽Ϧιʔεͷऔಘͱ͔͕ఆੴɻ Ϧιʔε Ξοϓσʔτظ λΠτϧʹؼͬͯ৽ن%- λΠτϧʹؼͬͯ৽ن%- λΠτϧʹؼͬͯ৽ن%-
  11. 5 7 ϫϯύϯظ Ϧιʔε෼཭ظ དྷੈظ ϦιʔεΞοϓσʔτظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ લલલੈ લલੈ

    લੈ ݱੈ ڈ೥ ϞόΠϧҎલʜ ͭ͗͜͜ɻ શ෦ೖΓɺ"QQ7FSߋ৽ 0O"QQ1BVTFΞϓσݕ஌ɺ3FT7FSߋ৽ શϦιʔεҰؾʹऔಘ ॳճىಈ࣌औಘɺ"QQ7FSߋ৽ શϦιʔεҰؾʹऔಘ དྷੈ
  12. ඈ͹͍͍ͯ͠ ؾ͕͢Δ 5 9 ӡ༻τϦΨʔ͸લظͱมΘΒͣɻ ௥ՃͰϢʔβʔʹࡋྔ μ΢ϯϩʔ υλΠϛϯάͷܾఆݖ Λ༩͑ɺ Πϯλʔωοτ͕ෆ۰ͳੈքͰ΋

    ήʔϜΛ͢Δ͜ͱΛՄೳʹ͢Δɻ XJpͰҰؾʹམͱͯ͠༡Ϳɺͱ͔ɻ ೚ҙ Ξοϓσʔτظ 0O"QQ1BVTF Ϣʔβʔૢ࡞ ͜ͷล͔Βઌ͸ มΘͬͯͳ͍ɻ
  13. 6 0 ϫϯύϯظ Ϧιʔε෼཭ظ དྷੈظ ϦιʔεΞοϓσʔτظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ લલલੈ લલੈ

    લੈ ݱੈ ڈ೥ ϞόΠϧҎલʜ ͭ͗͜͜ɻ 0O"QQ1BVTF Ϣʔβʔૢ࡞ͰͷΞϓσݕ஌ɺ3FT7FSߋ৽ શϦιʔεҰؾʹऔಘ શ෦ೖΓɺ"QQ7FSߋ৽ 0O"QQ1BVTFΞϓσݕ஌ɺ3FT7FSߋ৽ શϦιʔεҰؾʹऔಘ ॳճىಈ࣌औಘɺ"QQ7FSߋ৽ શϦιʔεҰؾʹऔಘ དྷੈ
  14. ඈ͹͍͍ͯ͠ ؾ͕͢Δ 6 5 ͕ɺ औಘࡁΈϦιʔε͕ ݹ͘ͳ͍ͬͯΔߋ৽͞Ε͍ͯΔ ৔߹ɺͦͷ··࢖ͬͯ͠·͏ͱԘ ക͕ѱ͍ɻ ࢖༻࣌ʹߋ৽͞Ε͍ͯΔ͔Λ

    νΣοΫɺ࠷৽ͷϦιʔεΛऔಘ Ͱ͖ΔͱԘക͕ྑ͍ɻ ৗ࣌ Ξοϓσʔτظ ݹ͘ͳ͍ͬͯΔͳΒɺ ͦͷ৔Ͱ࠷৽Λऔಘɻ ্ͦͯ͠ॻ͖ 9 ߋ৽ʂ ߋ৽͞ΕͯΔ
  15. ඈ͹͍͍ͯ͠ ؾ͕͢Δ 6 6 ৗ࣌ Ξοϓσʔτظ 0O"QQ1BVTF Ϣʔβʔૢ࡞ Ϧιʔεͦͷ΋ͷͰ͸ͳ͘ɺ Ϧιʔεͷߋ৽৘ใΛऔಘɻ

    Ϧιʔε࢖༻࣌ͷߋ৽νΣοΫΛ ߦ͏ͨΊʹɺ ߋ৽ݕ஌࣌ʹ<Ϧιʔεߋ৽৘ใ> Λऔಘ͢Δɻ
  16. ඈ͹͍͍ͯ͠ ؾ͕͢Δ ৗ࣌ Ξοϓσʔτظ 0O"QQ1BVTF Ϣʔβʔૢ࡞ ௨৴ Ϧιʔεͷߋ৽νΣοΫΛΑΓࡉ ͔͘ߦ͑Ε͹ɺϦιʔε࢖༻࣌ʹ ࠷৽ͷϦιʔεΛ࢖͑ΔՄೳੑ͕

    ߴ͘ͳΔɻ ͳͷͰɺ"QQͷ௨৴ʹศ৐ͯ͠ݕ ஌ॲཧΛߦ͏͜ͱʹ͢Δɻ ΞϓϦ͕ߦ͏௨৴ʹศ৐͠ɺ Ϧιʔεݕ஌Λߦ͏ɻ
  17. 7 0 ϫϯύϯظ Ϧιʔε෼཭ظ དྷੈظ ϦιʔεΞοϓσʔτظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ લલલੈ લલੈ

    લੈ ݱੈ ڈ೥ དྷੈ ϞόΠϧҎલʜ Ϣʔβʔૢ࡞ͰͷΞϓσݕ஌ɺ3FT7FS͍ͭͰ΋ߋ৽ 6QEBUBCMFҰݸ͝ͱͷऔಘ 0O"QQ1BVTF Ϣʔβʔૢ࡞ͰͷΞϓσݕ஌ɺ3FT7FSߋ৽ શϦιʔεҰؾʹऔಘ શ෦ೖΓɺ"QQ7FSߋ৽ 0O"QQ1BVTFΞϓσݕ஌ɺ3FT7FSߋ৽ શϦιʔεҰؾʹऔಘ ॳճىಈ࣌औಘɺ"QQ7FSߋ৽ શϦιʔεҰؾʹऔಘ ͋ͱͰɻ
  18. 7 1 ͓඼ॻ͖ ߋ৽Մೳཁૉ 6QEBUBCMF  ʹ͍ͭͯ ӡ༻ͷ ཧ૝ͱݱ࣮ ͦͷ࣮૷

    ཁૉͱӡ༻ͷ ෇͖߹Θͤ ͱɺະདྷͷબ୒ࢶ 1. 2. 3.
  19. 7 4 6QEBUBCMFͱӡ༻ૣݟද Ϧιʔε෼཭ظ ϦιʔεΞοϓσʔτظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ x ͍ͭͰ΋Ξϓσ 6QEBUBCMFҰݸ͝ͱͷऔಘ

    Ϣʔβʔૢ࡞Ξϓσ ಛఆλΠϛϯάΞϓσ ڧ੍"QQΞϓσػߏ #ZUF͔Β ੜ੒Ͱ͖Δ"TTFU ίʔυ͔Β ੜ੒Ͱ͖Δ"TTFU ԿͰ΋࢖͑Δ 6OJUZ4FSJBMJ[F"TTFU
  20. ࠶ͼ6QEBUBCMF1SPT$POT 7 5 ࡞Γ΍͢͞ ϩʔυ Ωϟογϡ/ ࠩ෼औಘ ϝϞϦޮ཰ ؚΊΒΕΔ Asset

    USA NotBad VeryHard Good VeryGood 99% Bytes VeryGood VeryGood ࣗ࡞Մ ϊʔΨʔυ 1% Code Good VeryHard ࣗ࡞Մ ϊʔΨʔυ 70%
  21. 7 7 ΩϟϥΫλʔ͕௥Ճ͞ΕΔ"QQͳΒ ը૾ฤ Ωϟϥ͕ֆͳΒ➡ ૿͑ΔλΠϛϯάͰɺCZUF<>͔ΒಡΊ͹͍͍ Ϧιʔε෼཭ظ ϦιʔεΞοϓσʔτظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ

    x 3FT7FS͍ͭͰ΋ߋ৽ 6QEBUBCMFҰݸ͝ͱͷऔಘ Ϣʔβʔૢ࡞Ξϓσ 3FT7FSߋ৽ ಛఆλΠϛϯάΞϓσ 3FT7FSߋ৽ ڧ੍"QQΞϓσػߏ #ZUF͔Β ੜ੒Ͱ͖Δ"TTFU ίʔυ͔Β ੜ੒Ͱ͖Δ"TTFU ԿͰ΋࢖͑Δ 6OJUZ4FSJBMJ[F"TTFU
  22. 7 8 ΩϟϥΫλʔ͕௥Ճ͞ΕΔ"QQͳΒ Ϟσϧฤ Ωϟϥ͕ϞσϧͳΒ 64"Ͱ͋Δඞཁ͕ͳ͍ͳΒ ➡ ૿͑ΔλΠϛϯάͰɺίʔυ͔Βੜ੒͢Ε͹͍͍ 73.͕͜Εɻ Ϧιʔε෼཭ظ

    ϦιʔεΞοϓσʔτظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ x 3FT7FS͍ͭͰ΋ߋ৽ 6QEBUBCMFҰݸ͝ͱͷऔಘ Ϣʔβʔૢ࡞Ξϓσ 3FT7FSߋ৽ ಛఆλΠϛϯάΞϓσ 3FT7FSߋ৽ ڧ੍"QQΞϓσػߏ #ZUF͔Β ੜ੒Ͱ͖Δ"TTFU ίʔυ͔Β ੜ੒Ͱ͖Δ"TTFU ԿͰ΋࢖͑Δ 6OJUZ4FSJBMJ[F"TTFU
  23. 7 9 ΩϟϥΫλʔ͕௥Ճ͞ΕΔ"QQͳΒ 64"ฤ Ωϟϥ͕Ϟσϧ͔ͭ64"ඞਢɺίʔυੜ੒ແཧͳΒ ➡ USAΛϏϧυ࣌ʹೖΕΔ ڧ੍Ξϓσ Ϧιʔε෼཭ظ ϦιʔεΞοϓσʔτظ

    ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ x 3FT7FS͍ͭͰ΋ߋ৽ 6QEBUBCMFҰݸ͝ͱͷऔಘ Ϣʔβʔૢ࡞Ξϓσ 3FT7FSߋ৽ ಛఆλΠϛϯάΞϓσ 3FT7FSߋ৽ ڧ੍"QQΞϓσػߏ #ZUF͔Β ੜ੒Ͱ͖Δ"TTFU ίʔυ͔Β ੜ੒Ͱ͖Δ"TTFU ԿͰ΋࢖͑Δ 6OJUZ4FSJBMJ[F"TTFU
  24. 8 1 Ϧιʔε෼཭ظ ϦιʔεΞοϓσʔτظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ x 3FT7FS͍ͭͰ΋ߋ৽ 6QEBUBCMFҰݸ͝ͱͷऔಘ Ϣʔβʔૢ࡞Ξϓσ

    3FT7FSߋ৽ ಛఆλΠϛϯάΞϓσ 3FT7FSߋ৽ ڧ੍"QQΞϓσػߏ #ZUF͔Β ੜ੒Ͱ͖Δ"TTFU ίʔυ͔Β ੜ੒Ͱ͖Δ"TTFU ΩϟϥΫλʔ͕௥Ճ͞ΕΔ"QQͳΒ 64"ฤ Ωϟϥ͕Ϟσϧ͔ͭ64"ඞਢɺίʔυੜ੒ແཧͳΒ ➡ Ωϟϥ͕૿͑ΔλΠϛϯάͰ"#Λ࢖ͬͯӡ༻
  25. 8 2 ԻɺγφϦΦɺ೉қ౓ઃఆ͕௥Ճ͞ΕΔ "QQͳΒ ➡ ૿͑ΔλΠϛϯάͰɺCZUF<>͔ίʔυ͔Βੜ੒͢Ε͹͍͍ Ϧιʔε෼཭ظ ϦιʔεΞοϓσʔτظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ

    x 3FT7FS͍ͭͰ΋ߋ৽ 6QEBUBCMFҰݸ͝ͱͷऔಘ Ϣʔβʔૢ࡞Ξϓσ 3FT7FSߋ৽ ಛఆλΠϛϯάΞϓσ 3FT7FSߋ৽ ڧ੍"QQΞϓσػߏ #ZUF͔Β ੜ੒Ͱ͖Δ"TTFU ίʔυ͔Β ੜ੒Ͱ͖Δ"TTFU ԿͰ΋࢖͑Δ 6OJUZ4FSJBMJ[F"TTFU
  26. 8 6 "#ʹ͍ͭͯ஌ΒΕ͍ͯͳ͍͜ͱ Ϧ ι ʔ ε Ξ ο ϓ

    σ ʔ τ ظ ೚ҙΞοϓσʔτظ ৗ࣌Ξοϓσʔτظ Ϧιʔε෼཭ظ ͙Θʔͬͱ΍Γ͍ͨӡ༻͕͋ͬͯɺ ͦΕΛ࣮ݱ͢ΔͨΊͷղͱͯ͠"#͕͋Δɻ ‎ ίϯχνϫʂ
  27. 9 3 ࠷ߴͷདྷੈ ϞόΠϧͷੈքͰ͸·ͩདྷͳ͍͔΋͠Εͳ͍͚Ͳɺ༗ઢͷੈքͳΒ4USFBN(BNJOH Έ͍ͨͳ΍ͭ͸དྷΔ͔΋ͩɻ (PPHMF͕΍Γͩͨ͠ɻ  ɾϢʔβʔ͕ίϯτϩʔϥѲΔͱαʔόଆͰήʔϜىಈͯ͠ ͦͷը໘Λखݩͷ57ʹૹΓ͚ͭͯ͘Δ 

    ͱ͍͏΋ͷͰɺΑ͏͸·͋ɺ͏ʔΜɺΞϓϦͷӡӦతʹ͸มΘΒͳ͍ɻ  ɾ৽͍͠ϦιʔεΛ࡞ͬͯ  ɾήʔϜͷதʹΞοϓσʔτ௨஌ϙΠϯτΛ࡞ͬͯ  ɾΞοϓσʔτ  Ҏ্ͩɻ ͓·͚
  28. 9 4 ࠷ߴͷདྷੈ  அઈ͞ΕͨαʔόͱΫϥΠΞϯτɺ͍ͬͯ͏֓೦͕ফ͑ͯαʔό্ͷΫϥΠΞϯτ ηογϣϯ͚ͩʹͳΔͷ͸͋ΔΜ͚ͩͲɺ  Ϣʔβʔ͕ήʔϜΛ༡ΜͰ͍Δɺ͍ͬͯ͏ηογϣϯͷ֓೦͸·ͩফ͑ͳ͔ͬͨɻ  ·͋ɺϢʔβʔ͕༡ΜͰ͍ΔΫϥΠΞϯτͷηογϣϯ͕͋Δ͏ͪɺͦͷηο

    γϣϯ͕ͲΜͳσʔλΛ͍ͭϩʔυͯ͠࢖͏͔ɺͱ͔ͷ֓೦͸ফ͑ͳ͍ɻ   ͷͰɺࠓ೔࿩ͨ͜͠ͱ͸͋Μ·ΓมΘΒͳ͍ɻ  ༻ҙ͢Δσʔλ͸มΘΒͣɺηογϣϯΛ੾Γͨ͘ͳ͚Ε͹ήʔϜΛىಈͨ͠·· ΞοϓσʔτΛܴ͑Δ͜ͱʹͳΔɻ ͓·͚
  29. 9 5 ࠷ߴͷདྷੈ  4USBNJOH(BNFͰมΘΔ͜ͱͱͯ͠͸ɺ  ɾΫϥΠΞϯτηογϣϯͱαʔόڑ཭͕ͳͷͰɺσʔλμ΢ϯϩʔυͰ͸ͳ͘ ୯ͳΔల։ʹͳΓɺ͔͔Δ͕࣌ؒ΄΅ʹͳΔ  ɾ୺຤ͷΪΨ໰୊͕ղফ͞ΕΔ

    4USFBNJOHֆ ԻͷσʔλྔͦΕࣗମʹ͸໨ΛͭͿ͍ͬͯΔɻ,Ͱ.#Tɻ (#Λ࢖͍ͭͿ͢ͷʹ TFD෼ɺ໿࣌ؒɻ͋Εɺɺ     ͋ʔʔෳ਺ͷϢʔβʔؒͰTIBSFEͳίϯςΩετͷ৔߹Ͳ͏ͳΔΜͩɺ΍ͬͺϝ ϯς͔ʁCBDLUPϦιʔεΞοϓσʔτظɻ·͋దࡐదॴͰɻ ͓·͚