public variable not showing in inspector
guys im trying to remake a simple flappy bird game i was following a yt video becouz im a beginer at this and when i used this code for obstacles id doesnt work for me or show public variables plz help.
using UnityEngine;
using System.Collections;
public class Obstacle_Controller : MonoBehaviour {
public GameObject obj1;
public GameObject obj2;
public GameObject obj3;
public GameObject obj4;
public GameObject obj5;
public GameObject obj6;
public GameObject obj7;
public GameObject obj_Position;
int count=0;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter2D (Collider2D col)
{
count = Random.Range (1,4);
if (col.gameObject.tag == "Obstacles"){
if (count == 1)
{
Instantiate (obj1, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 2)
{
Instantiate (obj2, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 3)
{
Instantiate (obj3, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 4)
{
Instantiate (obj4, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 5)
{
Instantiate (obj5, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 6)
{
Instantiate (obj6, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 7)
{
Instantiate (obj7, obj_Position.transform.position, Quaternion.identity);
}
}
}
Not sure why your public variables aren't visible, but I have a general suggestion regarding your code. You might want to try using an array for your game objects. It's a better way of doing what it looks like you're doing.
public GameObject[] objects;
public Transform spawnpoint;
void OnTriggerEnter2D(Collider2D other)
{
var index = $$anonymous$$athf.RoundToInt(Random.value * objects.Length);
var original = objects[index];
Instantiate(original, spawnpoint.position, spawnpoint.rotation);
}
Answer by Landern · Dec 19, 2016 at 05:36 PM
Probably because your script would throw exceptions that you haven't taken care of. The first will be that you're missing a ending curly brace to end the OnTriggerEnter2D method. You will also get an error because you're using UnityEngine and System while using the Random.Random static method. Because both namespaces(UnityEngine and System) have that method name you either need to remove one of the unity statements like System in this case, or fully qualify the namespace during the usage.
Below is a fixed version of your script. Also @iwaldrop makes a good point about using an array/List for your array of GameObjects....
using UnityEngine;
using System;
using System.Collections;
public class Test : MonoBehaviour
{
public GameObject obj1;
public GameObject obj2;
public GameObject obj3;
public GameObject obj4;
public GameObject obj5;
public GameObject obj6;
public GameObject obj7;
public GameObject obj_Position;
int count=0;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter2D (Collider2D col)
{
count = UnityEngine.Random.Range (1,4);
if (col.gameObject.tag == "Obstacles"){
if (count == 1)
{
Instantiate (obj1, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 2)
{
Instantiate (obj2, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 3)
{
Instantiate (obj3, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 4)
{
Instantiate (obj4, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 5)
{
Instantiate (obj5, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 6)
{
Instantiate (obj6, obj_Position.transform.position, Quaternion.identity);
}
else
if (count == 7)
{
Instantiate (obj7, obj_Position.transform.position, Quaternion.identity);
}
}
}
}
Your answer
Follow this Question
Related Questions
Unity 4.1.5 is not showing certain public variables in the inspector 1 Answer
Public variables acting like private ones! 0 Answers
How to use a public int in another script? 1 Answer
not a question, just advice on public variables 1 Answer
public int variable not updated in inspector for two scenes in Unity 0 Answers