วิธีสร้างระบบคลังโฆษณาแบบผู้เล่นทั่วโลก


11

ฉันพบปัญหาในการพยายามใช้ระบบสินค้าคงคลังภายใน XNA (ไม่สำคัญเลยอาจเป็นแพลตฟอร์มใดก็ได้) แต่จนถึงตอนนี้ นี่คือปัญหาที่ฉันพยายามล้อมรอบ:

ฉันจะรับไอเท็มจากโลกได้อย่างไร (คิดว่าเมื่อคุณฆ่ามอนสเตอร์มันจะดรอปเกราะ) และนำไปไว้ในคลังของผู้เล่นของฉัน?

หากสินค้าคงคลังเป็นเพียงรายการสินค้าในทางเทคนิคแล้วฉันจะนำ Steel Sword จากโลกไปสู่สินค้าคงคลังของผู้เล่นโดยไม่ต้องมีคลาสทำมากกว่าหนึ่งอย่างได้อย่างไร

ขณะนี้ฉันมีโครงสร้างรายการซึ่งมีค่าเลขฐานสิบหกที่ไม่ซ้ำกันนับจำนวนรายการที่มี (สำหรับวางซ้อนได้เช่นลูกศร) และพื้นผิวสำหรับแสดงผลภายในคลังโฆษณาและคุณสมบัติที่ไม่สำคัญอื่น ๆ (ชื่อคำอธิบาย ฯลฯ ) .

มันจะเป็นการออกแบบที่ไม่ดีถ้าฉันต้องแก้ไขคลาสไอเท็มที่มีอยู่ของฉันให้เป็นตำแหน่งของโลกพร้อมกับการตรวจจับการชนกันของข้อมูล (ไม่ต้องการให้ไอเท็มหล่นผ่านพื้นโลก)

ขอบคุณสำหรับการพิจารณาใด ๆ !


4
คุณไม่สามารถWorldItemแยกสิ่งที่InventoryItemใช่ให้กับคุณได้หรือไม่? (อาจจะWorldItemมีInventoryItemเทมเพลตที่ใส่ลงในสินค้าคงคลังของผู้เล่นเมื่อหยิบขึ้นมา)
George Duckett

1
@GeorgeDuckett คุณควรจะทำเรื่องนี้ให้คำตอบ .. อาจมีควรจะเป็นวิธีการบางอย่างในInventoryที่ใช้และเพิ่มเป็นWorldItem InventoryItemเพื่อให้สามารถจัดการกรณีที่รายการจำเป็นต้องสแต็ก (เช่น. ลูกศร)
bummzack

@bummzack: เสร็จแล้ว
George Duckett

คำตอบ:


17

วิธีที่ฉันจะไปคือมีโครงสร้างที่แตกต่างกัน 2 แบบ (หรือคลาส) และWorldItemInventoryItem

จากนั้นคุณสามารถเพิ่มInventoryItemเป็นคุณสมบัติ / เขตข้อมูลของคุณWorldItemซึ่งเป็นสิ่งที่ถูกวางไว้ในสินค้าคงคลังของผู้เล่นเมื่อหยิบรายการโลกขึ้นมา

คุณต้องการวิธีการบางอย่าง (ในระดับผู้เล่นหรือคลาสรายการใดรายการหนึ่ง) ที่จัดการเพิ่มรายการสินค้าคงคลังในสินค้าคงคลังของผู้เล่นเพื่อจัดการกับการซ้อนเช่นรายการ


ฉันชอบคำตอบนี้จริงๆขอบคุณมากมันสมเหตุสมผลมาก! หนึ่งความคิดสุดท้ายสมมติว่าบุคคลนั้นต้องการวางรายการสินค้าคงคลังจะต้องมี WorldItem อยู่ภายในด้วยหรือไม่
Ross

ถ้ามันต้องเป็น 2 ทางฉันจะถูกล่อลวงให้มีคลาส 'ค้นหา' แยกต่างหากที่เก็บรายการคู่โลกและรายการสินค้าคงคลัง จากนั้นคุณจะใช้สิ่งนั้นเพื่อค้นหาสิ่งใดสิ่งหนึ่ง
George Duckett

เยี่ยมมากเลยไม่เคยคิดอย่างนั้น นั่นเป็นความคิดที่น่าสนใจมาก เนื่องจากรายการทั้งหมดเป็นรูปธรรมจึงเหมาะสมที่จะค้นหารายการเหล่านั้น
Ross

2
ฉันจะทำลาย WorldItem เมื่อหยิบขึ้นมาและสร้างใหม่เมื่อรายการถูกทิ้ง
Simon Richter

ตกลง ไม่ได้ตั้งใจจะบอกเป็นนัย
George Duckett

0

ดังที่กล่าวไว้ก่อนที่จะแบ่งออกเป็นหลายคลาสหรืออาร์เรย์จะเป็นทางออกที่ดีที่สุดของคุณ ฉันจะสร้าง 3 ชั้นโลกผู้เล่นและรายการระดับโลกจะมีรายการ WorldItems อยู่ในนั้นชั้นผู้เล่นจะ แต่ชื่อรายการสินค้าคงคลังเมื่อผู้เล่นเลือกรายการคุณย้ายมันจากรายการในโลก class ไปยังรายการในคลาส Player

ในการวนรอบเกมของคุณคุณสามารถทำการวนซ้ำซึ่งดึงรายการทั้งหมดในรายการ WorldItems ไปที่หน้าจอ แต่นอกหลักสูตรจะไม่สนใจรายการสินค้าคงคลังในวัตถุผู้เล่น


วิธีปัจจุบันของฉันตอนนี้คือฉันมีคลาส WorldItem ที่แค็ปซูล ItemItem ทั้งที่เกี่ยวข้องกับรายการเดียวกัน ในวิธีการอัปเดตของเกมฉันจะวนไปตามรายการโลกและทดสอบขอบเขตการชนกับผู้เล่น หากทั้งสองชนกัน WorldItem จะถูกลบออกจากรายการ WorldItem และใส่ลงในสินค้าคงคลังของผู้เล่น (ซึ่งเป็นรายการ <> ของ InventoryItem)
Ross
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.