Показать сообщение отдельно
Старый 21.02.2013, 11:10   #21
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Передача переменной в метод

public interface IControlableByLogic
{
    
int parameter{getset;}
}

public class 
UserMonoBehaviourIControlableByLogic
{
    public 
int myControlableParameter

    
public parameter
    
{
        
get{ return myControlableParameter; }
        
setmyControlableParameter value;}
    }
    
}

public class 
AIMonoBehaviourIControlableByLogic
{
    public 
int myControlableParameterByAI

    
public parameter
    
{
        
get{ return myControlableParameterByAI; }
        
setmyControlableParameterByAI value;}
    }
}

public class  
GameLogicMonoBehaviour
{
   public 
void MoveUnit(IControlableByLogic unit)
   {
       
unit.parameter += 1;
   }

Собственно вместо интерфейсов можно использовать наследование - унаследовать базовый класc Unit от MonoBehaviour, дать ему базовые параметры, которыми управляет логика. А от него унаследовать классы User и AI которые будут использовать эти параметры. И функция MoveUnit принимала бы базовый класс Unit и работала бы с ним абстрактно, не зная кто это.

UPD: поправил немного код, забыл class написать и в интерфейсе была ошибка
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilOkta (21.02.2013)