using UnityEngine;
using System.Collections;
// Creates Radial Menu
public class InteractionGUI : MonoBehaviour {
public int numActions;
private float angle;
private float angleIncrement;
public float radius;
private Vector3 origin
= new Vector3
(0,
0,
0); //private Vector3 iconCoordinates;
public InteractionButton[] interactionButton;
Transform thisTransform;
public void openMenu()
{
//Calculate Menu Locations
angleIncrement = Mathf.Deg2Rad * (360/numActions);
int i = 0;
while (i < interactionButton.Length)
{
Vector3 iconCoordinates;
iconCoordinates.x = radius * Mathf.Sin( angleIncrement*i);
iconCoordinates.y = radius * Mathf.Cos( angleIncrement*i);
iconCoordinates.z = 0;
Debug.Log(thisTransform + " " + iconCoordinates + " " + i);
interactionButton[i].generateButton(thisTransform, 2, iconCoordinates); // This is line 37
i++;
}
//Build Menu
}
// Closes Menu
public void destroyMenu()
{
}
void Awake()
{
// Get gameManager
thisTransform = this.transform;
}
// Use this for initialization
void Start () {
openMenu(); //This is line 63
}
// Update is called once per frame
void Update () {
}
}
[System.Serializable]
public class InteractionButton
{
private GameObject gameManagerObject;
private GameManager gameManager;
//ICON
[HideInInspector]
public GameObject iconButton;
public string buttonName;
public string buttonIconName;
public int iconSize;
public Color32 iconColor;
public CharacterInputInterface TargetInputInterfaceScript;
public string methodName;
//BGICON + BUTTON
private GameObject iconBackground;
public string BGName = "ButtonAndBackground";
public string buttonBackgroundName = "itemNR";
public int BGiconSize = 64;
public void generateButton(Transform InteractionGUITransform, int GUIDepth, Vector3 coord)
{
Debug.Log(InteractionGUITransform + " " + GUIDepth + " " + coord);
// Get Gamemanger
gameManagerObject = GameObject.Find("01_GameManager");
gameManager = gameManagerObject.GetComponent<GameManager>();
// sprite Button
iconButton
= new GameObject
(buttonName
); iconButton.layer = 23;
iconButton.transform.parent = InteractionGUITransform;
iconButton.transform.localPosition = coord;
iconButton.AddComponent("UISprite");
UISprite spriteRef = iconButton.GetComponent<UISprite>();
//spriteRef.color = iconColor;
spriteRef.atlas = gameManager.gameAtlas;
spriteRef.spriteName = buttonIconName;
spriteRef.depth = GUIDepth;
spriteRef.width = iconSize;
spriteRef.height = iconSize;
spriteRef.GetAtlasSprite();
spriteRef.color = iconColor;
iconBackground
= new GameObject
(buttonBackgroundName
); iconBackground.layer = 23;
iconBackground.transform.parent = iconButton.transform;
iconBackground.AddComponent<BoxCollider>();
iconBackground.AddComponent("UISprite");
iconBackground
.transform.localPosition = new Vector3
(0,
0,
0);
UISprite spriteBGRef = iconBackground.GetComponent<UISprite>();
spriteBGRef.atlas = gameManager.gameAtlas;
spriteBGRef.spriteName = buttonBackgroundName;
spriteBGRef.GetAtlasSprite();
spriteBGRef.depth = GUIDepth-1;
spriteBGRef.width = BGiconSize;
spriteBGRef.height = BGiconSize;
spriteBGRef.autoResizeBoxCollider = true;
spriteBGRef.ResizeCollider();
UIButton button = iconBackground.AddComponent<UIButton>();
EventDelegate.Add(button.onClick, TargetInputInterfaceScript.Build, false); // This is line 141 - removing this line gets rid of the bug. I.E. GUI draws but clicking on it does nothing
}
}