Có khoảng 60 mẫu âm thanh trong đơn đăng ký của tôi. Tôi phải chơi nó với độ chính xác cao trong thời gian. 5ms sẽ mater. Âm thanh phải phát để phản hồi hành động của người dùng. Vì vậy, tôi không biết những gì âm thanh sẽ chơi tiếp theo. Tôi nghĩ rằng aboud precreating của SoundEffectInstance cho tất cả các âm thanh. Việc tạo ra SoundEffectInstance có mất thời gian và bộ nhớ không? Có đầy đủ bản sao của SoundEffect trong bộ nhớ hay chỉ một số thông tin con trỏ. Tôi có thể cải thiện ứng dụng của mình nếu tôi sẽ xử lý trước SoundEffectInstances không? Có cách nào khác để chơi mẫu càng sớm càng tốt trong XNA?Cách phát âm thanh càng sớm càng tốt?
Trả lời
A SoundEffect
chứa dữ liệu dạng sóng thực tế. Nó sử dụng một lượng lớn bộ nhớ (nhiều như dữ liệu dạng sóng yêu cầu).
Một SoundEffectInstance
là một đối tượng nhỏ, chứa dữ liệu về phát lại (vị trí, âm lượng, v.v ...) và một nút điều khiển cho "giọng nói" đã được phân bổ để phát lại.
Khi bạn sử dụng SoundEffect.Play
, nội bộ nó tạo ra một SoundEffectInstance
. Nó cũng có thể bơi các trường hợp này - vì vậy nó không cần phải tạo lại chúng trên các cuộc gọi tiếp theo.
Tạo SoundEffectInstance
mất một chút thời gian và bộ nhớ. Đối với hiệu ứng âm thanh trong một trò chơi đang chạy ở 30FPS (33ms trên mỗi khung hình), độ trễ liên quan sẽ không đáng kể.
Nếu bạn đang cố gắng để phát lại âm nhạc trình tự bằng cách trộn hiệu ứng âm thanh lại với nhau khác nhau, nơi mà thậm chí 5ms vấn đề, bạn cần phải thực hiện trộn âm thanh của riêng bạn sử dụng DynamicSoundEffectInstance
. Điều này sẽ đảm bảo rằng âm thanh được đồng bộ hóa xuống mẫu.
Nếu bạn đang cố gắng tạo một số loại "công cụ" có thể phát trong thời gian thực và bạn đang cố gắng giảm độ trễ đầu vào-đầu ra xuống 5ms - sau đó bỏ cuộc. 5ms là vô lý tốt và thường đòi hỏi thiết bị và phần mềm chuyên dụng.
Tuy nhiên, nếu bạn cần giảm độ trễ đầu vào-đầu ra của mình tốt nhất có thể, bạn có thể nhập cuộc thăm dò ý kiến thường xuyên hơn một lần cho mỗi khung hình. Và bạn vẫn có thể sử dụng DSEI. Tôi không chắc chắn nếu DSEI có một kích thước bộ đệm phát lại cấu hình, nhưng nếu nó bạn nên làm cho nó càng nhỏ càng tốt mà không cần giới thiệu âm thanh trục trặc.
Khi người dùng chọn một bộ, bạn nên tải các hiệu ứng âm thanh đó vào từ điển, vì vậy việc truy cập chúng sẽ nhanh hơn sau này.
Tuy nhiên, bạn không nên tải tất cả các hiệu ứng âm thanh, đặc biệt là những hiệu ứng bạn không cần trong một màn hình hoặc bộ nhất định. Ngoài ra, bạn nên dỡ bỏ các hiệu ứng âm thanh mà bạn sẽ không cần nữa.
Cần có thời gian để tải các hiệu ứng âm thanh đó, tùy thuộc vào kích thước và số lượng bạn muốn tải. Tôi khuyên bạn nên tạo một màn hình tải cơ bản để tải/dỡ nội dung trong trò chơi của bạn (hầu hết các trò chơi đều làm theo cách đó). Bạn sẽ được tải soundeffect (định dạng wav tôi đoán?) Trong bộ nhớ, không chỉ là một con trỏ, vì vậy đó là lý do tại sao hiệu ứng âm thanh cần phải được giữ ngắn.
Hiệu ứng âm thanh đã tải sẽ phát rất nhanh (độ trễ không thể nhận thấy). Tính năng tải trước sẽ tăng hiệu suất của ứng dụng là với chi phí sử dụng bộ nhớ.
Tôi sẽ cần tải trước đối tượng SoundEffectIstance cho mọi âm thanh hoặc chỉ SoundEffect? – xander27
Tôi tìm thấy có [link] (http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.aspx) rằng ** "Tất cả các đối tượng SoundEffectInstance được tạo từ một tài nguyên bộ nhớ chia sẻ SoundEffect "**. Vì vậy, tôi có thể tạo bất kỳ số lượng 'SoundEffectInstance' – xander27
- 1. áp dụng PageTransformer cho PagerView càng sớm càng tốt
- 2. Cách đặt chiều rộng cột càng nhỏ càng tốt?
- 3. Làm cách nào để tạo Swf được tạo ra Ant của tôi càng nhỏ càng tốt?
- 4. Cách tạo hình ảnh càng lớn càng tốt trong khi duy trì tỷ lệ khung hình
- 5. Tính toán càng nhiều danh sách càng tốt trong một khoảng thời gian cố định
- 6. Làm thế nào để hướng dẫn JVM để giữ chân bộ nhớ càng thấp càng tốt?
- 7. Tính toán không gian trống của ma trận càng nhanh càng tốt
- 8. (Python) Đếm dòng trong một (> 10GB) khổng lồ tập tin càng nhanh càng tốt
- 9. PostgreSQL: càng thấp LIMIT, càng chậm truy vấn
- 10. Cách tạo cây AVL bị lệch càng tốt?
- 11. học css ngày càng chuyên nghiệp
- 12. Tệp SQL Server Tempdb LOG ngày càng phát triển
- 13. CHỌN càng nhiều dữ liệu từ CLOB đến VARCHAR2 càng tốt, với các ký tự nhiều byte trong dữ liệu
- 14. Python: Cập nhật file XML sử dụng ElementTree trong khi bảo tồn bố trí càng nhiều càng tốt
- 15. Làm thế nào để chèn 20 triệu bản ghi vào cơ sở dữ liệu MySql càng nhanh càng tốt
- 16. Mediaplayer Cắt âm thanh quá sớm
- 17. Cách viết Python 2.x tương thích với Python 3.x càng tốt?
- 18. Hiệu quả hơn? Càng nhiều lõi hoặc nhiều CPU hơn
- 19. Cách phát tệp âm thanh
- 20. Tìm một ray mà cắt một đa giác nhiều lần càng tốt
- 21. Phát Âm thanh với J2ME
- 22. Phát luồng âm thanh an toàn bằng Âm thanh HTML5
- 23. Cách phát âm thanh từ tài nguyên
- 24. Cách phát âm thanh thông báo android
- 25. Phát âm thanh và âm thanh thuật toán
- 26. Phát lại âm thanh Ruby
- 27. Cách phát âm thanh bằng Python KHÔNG làm gián đoạn âm nhạc/các âm thanh khác phát khi đang chơi
- 28. Phát âm thanh với SoundPool
- 29. AudioServicesPlaySystemSound không phát âm thanh
- 30. Làm cách nào để tránh hết bộ nhớ bằng TDictionary ngày càng tăng?
Bạn có cần tất cả âm thanh vào bất kỳ lúc nào trong ứng dụng hoặc có âm thanh được gán cho các màn hình khác nhau không? – Msonic
Rất ít bộ bằng 60 âm thanh.Người dùng chọn đặt sau đó có thể là bất kỳ âm thanh nào từ bộ – xander27