Diskuze: Unity: Spawn Object jako children
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Objekty se nedají vytvořit jako children jiného objektu. Nastavuje se jim parent (rodič) a poté se stanou childrenem. Jde to několika způsoby:
public Transform parentTransform;
objekt.transform.SetParent(parentTransform);
//nebo
objekt.transform.SetParent(parentTransform, true);
// a taky
objekt.transform.parent = parentTransform;
Rozdíl mezi nimi je ten, že u posledních dvou zůstane stejná pozice i potom, co nastavíš parenta, kdežto u prvního zůstanou hodnoty pozice stejné a objekt se pak zachová jako kdyby byl parent středem prostoru. Čili pokud má parent pozici [3, 5] a objekt před nastavením parentu [2, 1], objekt se posune na pozici o 2 od parentu po ose x a o 1 od parentu po ose y, bude tedy mít pozici [5, 6]. Stejně se objekt zachová pokud druhému parametru v metodě SetParent dáš false. Zde si můžeš přečíst víc o třídě transform.
Díky moc jsi mi pomohl .
můžu se ještě zeptat: Console mi píše upozornění a nevím jak to napravit prosím ještě jednou o pomoc :
Parent of RectTransform is being set with parent property. Consider using the
SetParent method instead, with the worldPositionStays argument set to false.
This will retain local orientation and scale rather than world orientation and
scale, which can prevent common UI scaling issues.
UnityEngine.Transform:set_parent(Transform)
PaintPath:Update() (at Assets/Scripts/PaintPath.cs:15)
using UnityEngine;
using System.Collections;
public class PaintPath : MonoBehaviour {
GameObject prefab;
GameObject path;
// Use this for initialization
void Start () {
prefab = Resources.Load("Path") as GameObject;
}
// Update is called once per frame
void Update () {
path = Instantiate(prefab);
path.transform.parent = GameObject.Find("Canvas").transform;
path.transform.position = transform.position;
}
}
skús naimiesto transform.parent použiť transform.SetParent();
a ešte k predošlému, objekty sa dajú vytvárať ako child. je to 4tý
parameter Instantiate.
stačí si pozrieť dokumentáciu https://docs.unity3d.com/…antiate.html
alebo: public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);
Tak to se omlouvám, myslel jsem, že objekty se nedají spawnout jako children jiného objektu. Jak píše pavolbozalka. Jinak si to upozornění zkus přeložit. Unity ti navrhuje, že je lepší místo přiřazování vlastnosti parent zavolat metodu SetParent s worldPositionStays na false kvůli běžným problémům s UI zvětšením
Zobrazeno 5 zpráv z 5.