Tôi lưu trữ chuỗi ở đâu? Cách hiệu quả để tải chúng là gì?


8

Tôi đang làm một game nhập vai từ trên xuống cho iPhone. Tôi đang sử dụng tilemaps (CCTMXTileMap) và công cụ cocos2d-iphone.

Tôi đã tạo một lớp có thể xử lý tải bản đồ và NPC lên màn hình, một lớp xử lý đầu vào và, một lớp được cho là hiển thị hộp thoại. Lớp hộp thoại lấy một chuỗi hoặc một mảng và hiển thị trên màn hình trong hộp thoại gọn gàng, ẩn các điều khiển cho đến khi người dùng chạm vào màn hình, khi nó chuyển sang tin nhắn tiếp theo hoặc nếu đó là tin nhắn cuối cùng / duy nhất, ẩn hộp thoại.

Các NPC của tôi hiện đang được lưu trữ trong Dữ liệu lõi. Chuỗi của họ sẽ cần phải được cập nhật dựa trên tiến trình tìm kiếm. Ngoài ra, có các bit khác của hộp thoại, như biển chỉ dẫn và tin nhắn khác.

Vì vậy, nơi tôi đặt nội dung văn bản của trò chơi của tôi? Tôi không nghĩ Core Data là đúng nơi, vì ba lý do:

  1. Nếu các chuỗi của tôi được lưu trữ trong Dữ liệu lõi, có lẽ tôi sẽ khó dịch chúng hơn.

  2. Nếu các chuỗi của tôi nằm trong Dữ liệu lõi, điều đó chỉ còn lại cho tôi các chuỗi cho các NPC (sẽ được gắn vào các NPC trong Dữ liệu lõi). Trường hợp đó để lại mọi thứ khác?

  3. Nếu tôi để các chuỗi của mình trong Dữ liệu lõi, thì nó hơi nặng về các hoạt động tải, phải không?

Với tất cả các thông tin cơ bản này, tôi sẽ đặt chuỗi và hộp thoại của mình vào đâu trong trò chơi của mình?


tl; dr

Cách hiệu quả để lưu trữ chuỗi cho trò chơi iOS để có thể dễ dàng truy cập, dịch và tham chiếu tại các phần khác nhau của trò chơi?


Tôi đã xóa chỉnh sửa của bạn vì về cơ bản đó là một câu hỏi riêng biệt và nên là một câu hỏi riêng biệt.
Tết

Câu trả lời:


7

Trừ khi bạn có một số yêu cầu cụ thể về tính di động, định dạng hoặc tốc độ, tài nguyên chuỗi tiêu chuẩn của Apple sẽ ổn.


+1. NSLocalizedStringhoạt động tốt Trừ khi bạn muốn lưu trữ toàn bộ cây đối thoại, thì bạn có thể cần một định dạng hỗ trợ loại cấu trúc này.
bummzack

Và làm thế nào để tôi "gắn" chúng vào nhân vật của mình? Có cách nào để tham chiếu chúng theo số, nghĩa là string #8, hoặc strings(8), hoặc [strings objectAtIndex:8];?
Moshe

Các chuỗi có phím. Bạn nên đọc liên kết.

Điều này thật đúng với gì mà tôi đã tìm kiếm.
Moshe

0

Tôi sẽ tạo một tập tin bên ngoài hoặc tập tin cho tất cả các chuỗi. sau đó tải nó một lần khi chương trình bắt đầu vào một số đối tượng toàn cầu. trong thời gian chạy, mọi đối tượng cần hiển thị một số chuỗi sẽ phải yêu cầu đối tượng toàn cầu đó cho chuỗi thích hợp. bạn có thể sử dụng các khóa cho mỗi chuỗi hoặc bạn có thể sử dụng một mảng. nếu bạn không thích ý tưởng đối tượng toàn cầu, bạn có thể tải mọi chuỗi bất cứ khi nào bạn cần trực tiếp từ tệp, nhưng điều đó có thể gây ra khung hình / giây thấp khi tải các hộp thoại. sử dụng phương pháp này bạn có thể dễ dàng thay đổi ngôn ngữ bất cứ khi nào bạn muốn, chỉ cần bạn phải bắt đầu đọc từ một tệp khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.