Синтаксис:
Используется csharp
public class _Door : MonoBehaviour {
private GameObject DoorController;
private GameObject DoorBody;
private float rotation;
private float speed;
private bool left;
public bool isOpen;
public _Door (bool left, float rotation = 120, float speed = 5)
{
this.rotation = rotation;
this.speed = speed;
this.left = left;
this.DoorController = Instantiate(Resources.Load("DoorController", typeof(GameObject))) as GameObject;
this.DoorBody = Instantiate(Resources.Load("DoorBody", typeof(GameObject))) as GameObject;
}
public void A()
{
Movement(); //сдвиг оси вращения
}
public void S()
{
SetParent();
}
public void Update ()
{
if (isOpen)
{
Open();
}
else
{
Close();
}
}
public void Movement()
{
if (left)
{
LeftShift();
}
else
{
RightShift();
}
}
void LeftShift() //сдвиг пустышки влево
{
float width = DoorBody.transform.localScale.z / 2;
DoorController.transform.position = new Vector3(DoorController.transform.position.x, DoorController.transform.position.y, DoorController.transform.position.z - width);
}
void RightShift() //сдвиг пустышки вправо
{
float width = DoorBody.transform.localScale.z / 2;
DoorController.transform.position = new Vector3(DoorController.transform.position.x, DoorController.transform.position.y, DoorController.transform.position.z + width);
}
void Open()
{
DoorController.transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(transform.rotation.x, rotation, transform.rotation.z), speed * Time.deltaTime);
}
void Close ()
{
DoorController.transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(transform.rotation.x, 0, transform.rotation.z), speed * Time.deltaTime);
}
void SetParent()
{
DoorBody.transform.parent = DoorController.transform;
}
}
public class _CreatePrefab : MonoBehaviour {
void Start ()
{
_Door d = new _Door(true); //экземпляр класса Door
d.A();
d.S();
d.Update(); //ошибка происходит здесь и следующий экземпляр не создаётся
_Door o = new _Door(false);
o.A();
o.S();
o.Update();
}
}