Хм, пробую передать в метод переменную через интерфейс, компилятор ругается что я пытаюсь передать field как property, понимаю что несоответствие типов, тогда мне либо поле нужно объявить как свойство, либо научиться их передавать. Ниже скрипт (понимаю что много огорода). Задача передать интерфейсом поле UnitAngleNS и увеличить на 1. Для теста само собой.
using UnityEngine;
using System.Collections;
public interface IMoveDirection {
int Direction {get; set;}
}
public class MoveGamer : MonoBehaviour, IMoveDirection {
public bool UnitIsMove = false; // Движется ли юнит?
public float UnitCurrentAngle = 100f; // Скорость вращения юнита
public Vector3 UnitRotatingVector, UnitRotationPoint; // Вектор вращения и точка вращения юнита
public bool UnitSetMove = true; // Переменная отвечающая за инициализацию вектора
public int UnitAngleNS, UnitAngleEW = 0; // Текущие углы поворота север-юг/запад-восток. Исходные углы = 0, Север+, Юг-, Восток-, Запад+
public string UnitDirection; // Направление движения
public int UnitXPos, UnitYPos;
public int Direction
{
get{ return Direction;}
set{ Direction = value;}
}
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
UnitWaitMove (); // Юнит ожидает движение
}
public void UnitWaitMove ()
{
// Блок выбора направления движения
if ((Input.GetKeyDown(KeyCode.W)) & !(UnitIsMove)) UnitDirection = "North"; // север
if ((Input.GetKeyDown(KeyCode.S)) & !(UnitIsMove)) UnitDirection = "South"; // юг
if ((Input.GetKeyDown(KeyCode.D)) & !(UnitIsMove)) UnitDirection = "East"; // восток
if ((Input.GetKeyDown(KeyCode.A)) & !(UnitIsMove)) UnitDirection = "West"; // запад
if (UnitDirection != "") UnitSetMove = true; // Если команда задана, то инициировать вектор поворота
if (UnitSetMove) RotatePlayerUnit(MoveGamer.UnitAngleNS);
}
public void RotatePlayerUnit(Direction MoveGamer)
{
MoveGamer.Direction++;
}
}
}