2016-06-15 3 views
0

내 유닛은 새로운 무기를 집을 수 있습니다. 네 가지 관련 수업이 있습니다. 유닛, 발사체 (둘 다 게임 객체의 모노 클래스 클래스), 무기, 탄두 (둘 다 3d 공간에서 game 객체로 존재해서는 안됨).무기 의존성 구현 (유닛/무기/발사체/탄두) [Unity3D C#]

다양한 속성 (손상, 범위 등) 외에도 무기 인스턴스는 탄두와 발사체를 속성으로 저장해야합니다. 전자는 클래스 인스턴스이고, 후자는 조립식입니다. 무기 클래스에는 발사체를 인스턴스화하고, 목표를 정하고, 탄두를 적용하고, 다시로드하는 사격 방법이 있습니다.

monobehaviour를 상속하지 않는 클래스 또는 scriptableobjects 인 클래스는 편집기 창 (코드를 통한 지식)에 프리 팹을 할당 할 수 없으므로이 문제가 발생했습니다. 그리고 scriptable objects는 에디터에서 할당 할 수 없습니다. 나는 사격 장치를 무기 나 유닛에 할당 할 수 없다. scriptableobject와 monobhaviour 클래스를 함께 끈으로써 코드가 깨지는 것입니다.

이전에 작업 방법과 함께 조립식 참조를 단위 클래스에 할당하여이 작업을 수행했습니다. 현재 기본 탄두와 기본 무기 클래스가 있는데,이 클래스에서 아이들이 파생됩니다. 그러나 무기에 촬영 기능을 넣고 단위를 무기와 깨끗하게 구분하고 싶기 때문에 모든 무기 메서드와 속성을 단위 클래스에 넣어야하는 것에 만족하지 않습니다.

이 시스템을 구현하는 가장 좋은 방법은 무엇입니까?

+0

나는 싫지만 버전 제어를 고려해야한다 (언급했듯이, "잘 작동했다"). – MiningSam

+0

@MiningSam 항상 좋은 조언이지만 문제는 중요하지 않습니다. 문제가 상호 작용할 수있는 클래스와 비 클래스를 얻으 려하고 오류를 발생시키고 그 구현을 어떻게 해결해야하는지 잘 모릅니다. – inappropriateCode

답변

1

그래서 Weapon이 BaseWeapon에서 상속 받기를 원한다면 Prefab 참조를 설정하기 위해 필요한 MonoBehaviour에서 직접 상속받을 수 없습니다.

내가 본 방식대로 접근하는 가장 좋은 방법은 BaseWeapon을 각 무기가 구현하는 인터페이스로 구현하는 것이며 MonoBehaviour에서 상속하는 것입니다.

+0

감사합니다. 확인하기 위해, 인터페이스 baseweapon이이 경우 monobhaviour로부터 상속 받았다고 말하는 것입니까? 나는 검사관에게 독점적 인 스크립트를 할당하는 데 문제가있었습니다. 이 경우 유닛의 무기 스크립트 필드에 무기 스크립트를 할당합니다. 네가 제안한대로이 일이 가능해야한다고 말하는거야? – inappropriateCode

+1

무슨 뜻입니까, BaseWeapon은 어떤 것도 상속 할 필요가 없습니다. 그것은 인터페이스입니다. 무기는 클래스로 MonoBehaviour에서 상속받습니다. 이것은 프리 팹 (prefab)과 스크립트 (script)와 당신이 달성하기를 원하는 것을 참조 할 수있게합니다. Weapon은 또한 BaseWeapon 인터페이스를 구현하여 BaseWeapon 클래스의 모든 메서드와 변수에 액세스 할 수있게합니다. 이 경우 기본적으로 Weapon 클래스가 동시에 두 클래스에서 상속받을 수 있습니다. – DisturbedNeo

+0

물론, 정말로 원한다면 BaseWeapon도 MonoBehaviour로부터 상속받을 수 있다고 생각합니다. 그 일을 막을 수있는 방법은 없습니다. 나는 그것이 어떻게 상호 작용하는지 모르겠다. – DisturbedNeo