Показать сообщение отдельно
Старый 21.02.2013, 22:29   #33
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Передача переменной в метод

Хм, пробую передать в метод переменную через интерфейс, компилятор ругается что я пытаюсь передать 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++;
        }
    }
} 
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием