Chciałabym sie dowiedzieć czy jest jakiś sposó żeby odwołać sie do stworzonego w C# obiektu. Sprawa wygląda tak że obiekt został stworzony w osobnym voidzie i chciałabym sie do niego odwołać w innym voidzie ale w tym samym pliku. Cokolwiek próbowałam wyskakiwał błąd że wartość ta jest pusta. Może można jakość przypisać nowo stworzony obiekt do nowej zmiennej?
- Rejestracja:prawie 5 lat
- Ostatnio:prawie 3 lata
- Postów:360
Podeślij kod.
Tak to cieżko dokładnie pomóc.
- Rejestracja:około 3 lata
- Ostatnio:ponad 2 lata
- Postów:16
@urke:
public void TreeGrow( Player ObjectPlayer ) {
Plant.transform.localScale = new Vector3(
Plant.transform.localScale.x + 0.05f,
Plant.transform.localScale.y + 0.065f,
Plant.transform.localScale.z + 0.05f);
}
public void PlantTheSeed( Player ObjectPlayer) {
// Buil a Plant (Gameobject)
GameObject ObjectPlant = ObjectPlayer.CarriedSeed.BuildPlant();
// Place the plant into flower pot
Seed PlayerCarriedSeed = ObjectPlayer.CarriedSeed;
Transform TransformPlant = ObjectPlant.GetComponent<Transform>();
Renderer RendererPlant = TransformPlant.GetComponentInChildren<Renderer>();
RendererPlant.enabled = true;
Transform TransformFlowerPot = GetComponent<Transform>();
Vector3 MyPosition = TransformPlant.position;
MyPosition.x = TransformFlowerPot.position.x;
MyPosition.y = TransformFlowerPot.position.y;
MyPosition.z = TransformFlowerPot.position.z;
TransformPlant.position = MyPosition;
// Take the seed away from the player
ObjectPlayer.PlantedSeed();
ObjectPlant = Plant;
}
Chciałabym Obiekt "ObjectPlant" umieścić w zmiennej Plant. Jest to możliwe?

- Rejestracja:około 3 lata
- Ostatnio:ponad 2 lata
- Postów:16
@Spine:
public class FlowerPot : MonoBehaviour {
public Seed ThePlantedSeed;
private int PlantSize;
private int PlantIn;
private GameObject Plant;
void Start() {
ThePlantedSeed = null;
PlantSize = 0;
PlantIn = 0;
}
private void OnCollisionEnter( Collision collision ) {
if (collision.collider.gameObject.tag == "Player") {
Player ObjectPlayer = collision.collider.GetComponent<Player>();
if (ObjectPlayer.CarriedSeed != null && ThePlantedSeed == null) {
if (PlantIn == 0) {
PlantTheSeed(ObjectPlayer);
}
} else if (ObjectPlayer.CarriedWateringCan == true && PlantIn != 0) {
TreeGrow(ObjectPlayer);
} else if (ObjectPlayer.CarriedSeed == null && ObjectPlayer.CarriedWateringCan == null) {
Debug.Log("U don't have anything");
}
}
}
public void TreeGrow( Player ObjectPlayer ) {
if (PlantSize <= 2) {
Plant.transform.localScale = new Vector3(
Plant.transform.localScale.x + 0.05f,
Plant.transform.localScale.y + 0.065f,
Plant.transform.localScale.z + 0.05f
);
PlantSize = PlantSize + 1;
}
}
public void PlantTheSeed( Player ObjectPlayer) {
// Buil a Plant (Gameobject)
GameObject ObjectPlant = ObjectPlayer.CarriedSeed.BuildPlant();
// Place the plant into flower pot
Seed PlayerCarriedSeed = ObjectPlayer.CarriedSeed;
Transform TransformPlant = ObjectPlant.GetComponent<Transform>();
Renderer RendererPlant = TransformPlant.GetComponentInChildren<Renderer>();
RendererPlant.enabled = true;
Transform TransformFlowerPot = GetComponent<Transform>();
Vector3 MyPosition = TransformPlant.position;
MyPosition.x = TransformFlowerPot.position.x;
MyPosition.y = TransformFlowerPot.position.y;
MyPosition.z = TransformFlowerPot.position.z;
TransformPlant.position = MyPosition;
//ObjectPlayer.PlantedSeed();
PlantIn = PlantIn + 1;
ObjectPlant.transform.localScale = new Vector3(
ObjectPlant.transform.localScale.x - 0.9f,
ObjectPlant.transform.localScale.y - 0.95f,
ObjectPlant.transform.localScale.z - 0.9f
);
// Take the seed away from the player
ObjectPlayer.PlantedSeed();
PlantIn = PlantIn + 1;
Plant = ObjectPlant;
}
}
Całość wygląda tak

- Rejestracja:prawie 22 lata
- Ostatnio:2 minuty
- Postów:6636
Nie znam początkowej wartości ObjectPlayer.CarriedSeed
.
A metoda PlantTheSeed
wykona się tylko wtedy, kiedy ObjectPlayer.CarriedSeed
nie będzie nullem.
No i inne warunki też muszą być spełnione.
Użyj Debug.Log
na wszystko. Żeby się dowiedzieć które funkcje się wykonały, w jakiej kolejności oraz jakie są wartości zmiennych używanych we wszystkich warunkach.
Ja uważam, że skoro:
Wyskakuje błąd "Object reference not set to an instance of an object" na linijce "Plant.transform.localScale = new Vector3("
To Plant
nie został zainicjowany, czyli metoda TreeGrow
została wywołana zanim została wykonana metoda PlantTheSeed
.
Poza tym do wklejania kodu używaj znaczników. Przy pisaniu posta kliknij w link Markdown jest obsługiwany
(prawy dolny róg) i przeczytaj sekcję Kod źródłowy.