Unityを使用してゲーム製作を行っております。
私のAddressable Assets Systemの理解が正しいか、お教えいただけますでしょうか。
#確認したこと
以下のスクリプトをアタッチしたGameObjectをPrefab化し、
Addressable Assets Systemを使用し、サーバに配置したものを実行時に読み込ませるものとします。
RotateCube
1using UnityEngine; 2using System.Collections; 3 4public class RotateCube : MonoBehaviour { 5 void Update () { 6 // 回転させる 7 transform.Rotate(new Vector3(0, 0, 5)); 8 } 9}
読み込む側は、サーバに配置されたjsonファイルから生成すべきprefab名を取得しそれを生成します。
json
1{"shape":"RotateCube"}, 2{"shape":"RotateCube"}
ShapeGenerator
1public class ShapeGenerator : MonoBehaviour { 2 void Start() { 3 // jsonを読み込みこんで1つずつ生成 4 List<string> shapes = LoadJson(); 5 foreach(var shape in shapes) { 6 CreateShape(shape); 7 } 8 } 9 10 // AASでサーバに配置されたnameのGameObjectを生成する 11 void CreateShape(string name) { 12 Addressables.LoadAssetAsync<GameObject>(name).Completed += op => { 13 go = op.Result; 14 Instantiate(go); 15 }; 16 }
アプリ配信後に、以下のような全く新しい「SlideSquare」というGameObjectを追加したいと思い
Prefab化しサーバに配置しました。
SlideSquare
1using UnityEngine; 2using System.Collections; 3 4public class SlideSquare: MonoBehaviour { 5 void Update () { 6 // 移動させる 7 transform.Translate(new Vector3(10, 0, 0)); 8 NewAction(...); 9 } 10}
jsonファイルを以下の様に変更して実行したところ
json
1{"shape":"RotateCube"}, 2{"shape":"SlideSquare"}
SlideSquareのPrefabにアタッチしていたScript「SlideSquare」が ロードできず動作しませんでした。
#私のAASの認識
- PrefabにアタッチされたScriptは消える
- ただしアプリ自体に事前にそのScriptが組み込まれている場合には、ロード時に参照を解決しアタッチされる
- つまり事前組み込みしていないScriptを後から動的に追加する方法はない
このような認識で間違っていないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。