Я довольно новый (очень новый, на самом деле менее 8 часов новый) для Unity 3D.Невозможно создать экземпляр поведения в единстве
Как оказалось, моя новизна Единства поставила меня с довольно странной проблемой. Рассмотрим два Behaviors ниже:
Behavior CamCaptureDialogBehavior
:
using UnityEngine;
using System.Collections;
public class CamCaptureDialogBehavior : MonoBehaviour
{
// 200x300 px window will apear in the center of the screen.
private Rect windowRect = new Rect ((Screen.width - 200)/2, (Screen.height - 300)/2, 200, 300);
// Only show it if needed.
private bool show = false;
public CamCaptureDialogBehavior()
{
}
// Use this for initialization
void Start()
{
}
void OnGUI()
{
if (show)
windowRect = GUI.Window (0, windowRect, DialogWindow, "Game Over");
}
void DialogWindow (int windowID)
{
float y = 20;
GUI.Label (new Rect (5, y, windowRect.width, 20), "Title goes here");
if (GUI.Button (new Rect (5, y, windowRect.width - 10, 20), "Ok")) {
Application.LoadLevel (0);
show = false;
}
}
// To open the dialogue from outside of the script.
public void Open()
{
show = true;
}
// Update is called once per frame
void Update()
{
}
}
Поведение: PictureButtonBehavior
:
using UnityEngine;
using UnityEditor;
using System.Collections;
public class PictureButtonBehavior : MonoBehaviour
{
private bool displayedGUI = false;
private bool ShowThisGUI = false;
void Start()
{
}
void Update()
{
if (displayedGUI == true) {
Debug.Log (string.Format ("displayedGUI = {0}\r\n", displayedGUI));
displayedGUI = false;
ShowThisGUI = false;
}
}
void OnGUI()
{
if (ShowThisGUI) {
Debug.Log (string.Format ("ShowThisGUI = {0}\r\n", ShowThisGUI));
displayedGUI = true;
ShowThisGUI = false;
CamCaptureDialogBehavior ccdb = new CamCaptureDialogBehavior();
if (ccdb != null) {
ccdb.enabled = true;
ccdb.Open();
}
}
}
public void OnClick()
{
ShowThisGUI = true;
}
}
В CamCaptureDialogBehavior ccdb = new CamCaptureDialogBehavior();
, ccdb
всегда null
.
Есть ли способ unqiue для создания экземпляров классов в Unity/Mono?
или, как я могу создать CamCaptureDialogBehavior
в PictureButtonBehavior
и иметь возможность отображать диалоговое окно, представленное CamCaptureDialogBehavior
.
Если это происходит от Monobehaviour, не используйте новые. Использовать intiantiate -> http://docs.unity3d.com/ScriptReference/Object.Instantiate.html – OMGtechy
Я попытался использовать initiate, но для использования initiate мне нужно иметь начальное значение в первую очередь. Он по-прежнему возвращает мне null. – Abhinav
Вы можете использовать Resources.Load, если у вас нет экземпляра для клонирования :) – OMGtechy