2016-08-16 2 views
0

Каков идеальный способ структурирования нескольких игровых объектов того же типа, все можно управлять с помощью одного контроллера, но с другой конкретной функцией? Я не хочу делать все, что хочу, чтобы изменить анимацию.Структурирование нескольких игровых объектов противника

Например, человек может Walk() и Run(), собака может Crawl(), и летучая мышь может Fly(). Но все они враги, и у них есть Хит, и все они переехали с агентом Nav Mesh.

И в моей главной игре я делаю что-то вроде этого:

enemy.SetDestination(pos); 
+0

Почему вы не можете назвать анимацию таким же образом? Например, Move (для ходьбы или перемещения), PersonalAction (для ползания, полета или бега). –

ответ

1

Я бы порекомендовал вам использовать интерфейсы. В C# он позволяет создавать функции и свойства, которые будут распространены в нескольких типах объектов.

Для того, чтобы создать интерфейс, который вы должны использовать «интерфейс» зарезервированное слово:

public interface InterfaceName { 

    //Properties of the interface 
    int health {get; set;} 

    //Methods of the interface 
    void Hit(int damage); 
} 

Интерфейсы очень похожи на классы, но это не будет иметь определения в своих методах. Они используются для структурирования подобных поведений. После того как вы создать свой интерфейс, в главном классе вы должны реализовать:

public class YourClass : InterfaceName { 
    //..... 

    // Implementation of your interface 
    void Hit(int damage){ 
     //Your code here 
    } 

    //..... 
} 

Поскольку C# не поддерживает множественное наследование классов, интерфейсов очень важны для того, чтобы повторно использовать код.

Если вам нужна дополнительная информация об интерфейсах, я рекомендую вам этот link

EDIT:

взглянуть на это так же: Unity - Interfaces

Смежные вопросы