เมื่อหลายปีก่อนฉันเริ่มทำงานกับ Unity และฉันยังคงต่อสู้กับปัญหาของสคริปต์คู่ที่แน่น ฉันจะจัดโครงสร้างรหัสของฉันเพื่อหลีกเลี่ยงปัญหานี้ได้อย่างไร
ตัวอย่างเช่น:
ฉันต้องการมีระบบสุขภาพและความตายในสคริปต์แยกต่างหาก ฉันต้องการมีสคริปต์การเดินที่สามารถเปลี่ยนได้ที่แตกต่างกันซึ่งทำให้ฉันสามารถเปลี่ยนวิธีการที่ตัวละครของผู้เล่นถูกย้าย (การควบคุมแรงเฉื่อยทางฟิสิกส์เช่นในมาริโอเมื่อเทียบกับการควบคุมที่กระตุกอย่างรวดเร็วเช่นใน Super Meat Boy) สคริปต์สุขภาพจำเป็นต้องมีการอ้างอิงถึงสคริปต์แห่งความตายเพื่อที่จะสามารถเปิดใช้วิธีการ Die () เมื่อสุขภาพของผู้เล่นถึง 0 สคริปต์ความตายควรมีการอ้างอิงถึงสคริปต์การเดินที่ใช้เพื่อปิดการเดินบนความตาย (ฉัน เหนื่อยกับซอมบี้)
ฉันจะตามปกติสร้างการเชื่อมต่อเช่นIWalking
, IHealth
และIDeath
เพื่อที่ฉันสามารถเปลี่ยนองค์ประกอบเหล่านี้ที่ราชประสงค์โดยไม่ทำลายส่วนที่เหลือของรหัสของฉัน PlayerScriptDependancyInjector
ฉันจะมีพวกเขาตั้งขึ้นโดยสคริปต์แยกวัตถุเล่นพูด บางทีนั่นอาจจะมีสคริปต์สาธารณะIWalking
, IHealth
และIDeath
คุณลักษณะเพื่อให้การอ้างอิงที่สามารถตั้งค่าโดยนักออกแบบระดับจากการตรวจสอบโดยการลากและวางสคริปต์ที่เหมาะสม
นั่นจะทำให้ฉันสามารถเพิ่มพฤติกรรมให้กับวัตถุเกมได้อย่างง่ายดายและไม่ต้องกังวลกับการพึ่งพารหัสฮาร์ดโค้ด
ปัญหาใน Unity
ปัญหาที่อยู่ในความสามัคคีฉันไม่สามารถสัมผัสอินเตอร์เฟซในการตรวจสอบและถ้าผมเขียนตรวจสอบของตัวเองอ้างอิงเคยได้รับต่อเนื่องและเป็นจำนวนมากของการทำงานที่ไม่จำเป็น นั่นเป็นเหตุผลที่ฉันทิ้งไว้กับการเขียนรหัสคู่แน่น Death
สคริปต์ของฉันแสดงการอ้างอิงถึงInertiveWalking
สคริปต์ แต่ถ้าฉันตัดสินใจว่าฉันต้องการให้ผู้เล่นควบคุมตัวละครให้แน่นฉันไม่สามารถลากและวางTightWalking
สคริปต์ได้ฉันต้องเปลี่ยนDeath
สคริปต์ ที่ดูด ฉันสามารถจัดการกับมันได้ แต่วิญญาณของฉันร้องไห้ทุกครั้งที่ฉันทำอะไรแบบนี้
ทางเลือกที่ต้องการไปยังอินเตอร์เฟสใน Unity คืออะไร? ฉันจะแก้ไขปัญหานี้ได้อย่างไร ฉันพบสิ่งนี้แต่มันบอกสิ่งที่ฉันรู้แล้วและมันไม่ได้บอกวิธีทำใน Unity! สิ่งนี้จะกล่าวถึงสิ่งที่ควรทำไม่ใช่วิธีการที่มันไม่ได้แก้ไขปัญหาการมีเพศสัมพันธ์อย่างแน่นหนาระหว่างสคริปต์
โดยรวมแล้วฉันรู้สึกว่ามันถูกเขียนขึ้นสำหรับผู้ที่มาที่ Unity ด้วยพื้นหลังการออกแบบเกมที่เพิ่งเรียนรู้วิธีเขียนโค้ดและมีทรัพยากรน้อยมากใน Unity สำหรับนักพัฒนาทั่วไป มีวิธีมาตรฐานในการจัดโครงสร้างโค้ดของคุณใน Unity หรือฉันต้องหาวิธีการของตัวเอง?
The problem is that in Unity I can't expose interfaces in the inspector
ฉันไม่คิดว่าฉันเข้าใจสิ่งที่คุณหมายถึงโดย "เปิดเผยส่วนต่อประสานงานในผู้ตรวจสอบ" เพราะความคิดแรกของฉันคือ "ทำไมไม่"