2

異なる画像に異なるプレハブを割り当てるにはどうすればよいですか?

今、私はすべてのプレハブを互いの上にロードしていますが、各プレハブが 1 つの画像の上に 1 回だけ読み込まれるようにするにはどうすればよいですか?

サンプル コード (フレーム コーナー) を変更して独自のプレハブにロードし、辞書を使用してプレハブとデータベースの画像をペアにしましたが、プログラムを実行すると、プレハブを 1 つ配置するのではなく、すべてのプレハブを同じ場所に挿入します。各画像にすべてのプレハブを配置します-これは私が使用しているコードです:

        public GameObject obj1, obj2, obj3, obj4;
    Dictionary<int, GameObject> imagePrefabPairs;
    public AugmentedImage Image;

    void Start()
    {
        instantiateDictionary();
    }

    // TODO: make initialisation dynamic, to match the size of the db.
    public void instantiateDictionary()
    {
        imagePrefabPairs = new Dictionary<int, GameObject>
        {
            { 0, obj1 },
            { 1, obj2 },
            { 2, obj3 },
            { 3, obj4 }
        };
    }

    public void Update()
    {
        if (Image == null || Image.TrackingState != TrackingState.Tracking)
        {
            obj1.SetActive(false);
            obj2.SetActive(false);
            obj3.SetActive(false);
            obj4.SetActive(false);
            return;
        }
        Pose _centerPose = Image.CenterPose;
        imagePrefabPairs[Image.DatabaseIndex].transform.localPosition = _centerPose.position;
        imagePrefabPairs[Image.DatabaseIndex].transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
        imagePrefabPairs[Image.DatabaseIndex].SetActive(true);
    }

あるプレハブがロードされているかどうかを確認し、次のプレハブをロードして一度に 1 つずつインスタンス化することを選択するには、何らかの if ステートメントが必要だと考えていますが、その方法がわかりません。それを実現するためのより直接的な方法はありますか...?

4

2 に答える 2