Wpis z mikrobloga

Pomógłby mi ktoś, krótko wyjaśniając, w jaki sposób zrobić uniwersalny system interakcji z obiektami w #unity3d ?
Aktualnie mam zrobione wszystko tak:
1. Napisałem interfejs IInteractable, który zawiera funkcje Use oraz Grab.
2. Napisałem klasę ScriptableObject, którą nazwałem SOInteractable, która zawiera takie informacje o obiekcie jak:
- Nazwa obiektu
- Opis obiektu
- Czy można użyć obiekt (np. otworzyć drzwi, użyć apteczkę)
- Czy można złapać obiekt (np. złapać beczkę i ją przenieść)
I informacje z SOInteractable mają pojawiać się na ekranie gracza.
3. Napisałem skrypt, który ma to wszystko zebrać do kupy. Skrypt nazywa się InteractableSearch i jest on "przyczepiony" do kamery FPS gracza.
Skrypt ten wygląda tak Pastebin bo ma lepsze kolory

No i jak widać wszystkie obiekty muszę teraz łapać w jeśli (obiekt to drzwi) itd. i może nie jest to duży problem ale co jeśli miałbym w grze np. 50 obiektów? No nie wygląda to przede wszystkim ładnie i nie jest to też wygodne, co do wydajności to nie mam pojęcia jak to się ma.
Da się zrobić to jakoś łatwiej? Próbowałem umieścić ScriptableObject SOInteractable w interfejsie IInteractable ale się nie da bo Visual Studio krzyczy Interfejsy nie mogą zawierać pól wystąpienia ( ͡° ʖ̯ ͡°)

Jakieś pomysły jak to lepiej ogarnąć? Z góry dziękuje.
  • 5
@mamniciwszystko dlaczego pobierasz komponent
DrawerInteractable I DoorInteractable a nie interfejs
IInteractable który podobno masz?

Interfejs nie ma pól ale może mieć property i getter

W interfejsie:
SOInteractable InteractableData {get;}

I implementacja w obiektach
SOInteractable InteractableData => interactableData;
@zibizz1: ja pierdykam - działa ( ͡° ͜ʖ ͡°)

dlaczego pobierasz komponent DrawerInteractable I DoorInteractable a nie interfejs IInteractable który podobno masz?


Ponieważ wydawał mi się on bezużyteczny w momencie kiedy musiałem pobrać też informację o obiekcie, na który patrzy gracz, a interfejs IInteractable tych informacji nie zawierał. Co prawda jest on w kodzie ale nie był on użyty. Kod, który podałeś SOInteractable InteractableData {get;} działa, i
@420_3 coś mi wykop powiadomienia nie wyrzygał, że jest nowy komentarz.

Generalnie projekt, którego dotyczyło pytanie już porzuciłem ( ͡º ͜ʖ͡º)

Miałem w planach stworzenie gierki typu F2F: Ironbark Lookout ale z otwartym światem, paranormalnymi stworzeniami oraz w formie symulatora niż zwykłego opowiadania historii - problemem u mnie jest optymalizacja, nie mogę znaleźć np. głupich drzew, które mają dużo LOD i są zoptymalizowane pod kątem Unity, a
@mamniciwszystko mam już trochę doświadczenia w unity, tworzę gry akcji z kamerą izometryczną i symulatory czołgów i helikopterów. Ale teraz skupiam się n gierkach mobilnych. Chce parę wypuścić żeby zbadać rynek i żeby jakiś dochód pasywny wpadał. Jak chcesz to przejdziemy na priv i się wymienimy snippetami, chętnie popatrzę co tam działasz. ^^ sorry że tak mało pisze w porównaniu z tobą ale z telefonu.