Monday, August 17, 2015

Share Facebook, Twitter, Google+, Pinterest, LinkedIn và gửi feedback bằng email trong Unity theo cách đơn giản nhất

Trong bài viết này, mình sẽ hướng dẫn cách share Facebook, Twitter, Google+, Pinterest, LinkedIn và gửi feedback bằng Email trong Unity theo cách đơn giản nhất. Bạn có thể sử dụng cách này để share trên tất cả các nền tảng có hỗ trợ trình duyệt web.

- Bước 1: download library
Link download: ShareController.cs

Download library ở trên (thực ra chỉ có 1 class) và đặt vào trong project Unity của bạn

- Bước 2: gọi hàm sau để thực hiện chức năng bạn muốn: 
  • Share Facebook: ShareController.ShareFacebook(string message)
  • Share Twitter: ShareController.ShareTwitter(string tweet)
  • Share Google+: ShareController.ShareGooglePlus(string message)
  • Share Pinterest: ShareController.SharePinterest (string image, string source, string description="")
  • Share LinkedIn: ShareController.ShareLinkedIn (string message, string title, string summary="", string source="")
  • Send email: ShareController.SendEmail (string receiver, string subject, string body, string cc="", string bcc="")

Giải thích hoạt động của thư viện: bản chất của các hàm trên là dùng Application.OpenURL để dùng browser gửi 1 request lên (GET request). Thư viện chỉ là 1 wrapper chức năng này để đơn giản hóa công đoạn thôi. Bởi vì sử dụng Application.OpenURL nên thư viện có tính cross platform rất cao, có thể hoạt động trên cả những nền tảng mà những bộ SDK thông thường (FacebookSDK cho Unity là 1 ví dụ) không thể hoạt động được.

Chức năng send email mình cũng đưa vào cùng với các chức năng share vì bản chất hoạt động tương tự. Bạn có thể dùng chức năng send email này vào khá nhiều mục đích ví dụ như: chức năng gửi email feedback cho game... Chức năng này sẽ mở ra trình soạn email mặc định trên máy với các thông tin được điền sẵn (thông tin đó chính là tham số của lời gọi hàm).

Phân tích ưu nhược điểm:
- Ưu điểm:
  • Dễ sử dụng, đơn giản, không cần mất nhiều bước tích hợp phiền hà như các bộ SDK.
  • Thực sự cross platform, hoạt động trên tất cả các nền tảng có hỗ trợ hàm Application.OpenURL. Với 1 số nền tảng như Blackberry, Samsung TV, Tizen OS thì đây gần như là cách duy nhất để bạn có thể thực hiện chức năng share.
  • Tính ổn định cao: do sử dụng browser để gửi GET request nên cũng ít gặp lỗi hơn, không vướng vào vấn đề permission như các phương pháp khác (VD: share Facebook bạn sẽ cần permission liên qua đến post status của Facebook.).
- Nhược điểm:
  • Chức năng khá hạn chế, chỉ có thể share, không thể invite friend, request game...
  • Không có hàm callback: giả sử bạn cần bắt sự kiện share thành công để tặng tiền chẳng hạn, với thư viện này bạn sẽ không làm được điều đó
Kết luận: bạn có thể vận dụng cách trên trong các ngôn ngữ lập trình, game engine hoặc các môi trường lập trình khác không bắt buộc phải là Unity. Nguyên tắc sử dụng: mở 1 web browser với đường link là 1 GET request đến chức năng bạn cần.

Đường link sau là 1 URL builder giúp bạn tạo URL cho chức năng share bạn cần (nếu bạn đang dùng Unity và dùng thư viện trên thì không cần cái này): Share URL generator


Saturday, August 15, 2015

Đo đạc tốc độ các thư viện Tweening cho Unity3D

Mình sẽ so sánh nhanh 3 giải pháp Tween hay dùng trong Unity3D hiện nay: built-in Legacy Animation, HOTween and DOTween.

Link download: DOTween

Điều kiện test:
- Sử dụng 5000 game object để test
- Các Tween được lặp, có thời gian 1 s mỗi vòng lặp và dịch chuyển giữa 2 điểm (0, 0, 0) to (1.3, 1.4, 1.5).
Các phần mềm sử dụng
– Unity 4.6.7
– HOTween v1.3.350.
– DOTween 1.0.810
– Unity profiler với tùy chọn ‘Deep Profile’được bật

Đầu tiên hãy so sánh thời gian khởi tạo và số lượng bộ nhớ cấp phát khi khởi tạo


Legacy Animation
Frame time: ~166.7 ms
GC Allocations: 97.8 KB
Memory: ~20.07 MB
Frames to initialize: 1

HOTWeen
Frame time: ~268.68 ms
GC Allocations: 4293 KB + 1.3 KB for second frame
Memory: ~25.1 MB
Frames to initialize: 2

DOTween
Frame time: 122.86 ms (
GC Allocations: 1800 KB
Memory: ~10 MB
Frames to initialize: 1

Tiếp theo hãy so sánh tốc độ và bộ nhớ cấp phát trong từng frame khi chạy


Legacy Animation
Frame time: 12-13 ms
GC Allocations: 0 B

HOTween
Frame time: 36-40 ms
GC Allocations: 420 B – 672 

DOTween
Frame time: 9 ms
GC Allocations: 0 B

Các biểu đồ






Rõ ràng thư viện DOTween tỏ ra vượt trội giải pháp mà chúng ta hay dùng là HOTWeen và Legacy Animation.

Link download: DOTween




Friday, August 14, 2015

Giới thiệu về Maintainer - Asset không thể thiếu trong 1 project Unity

 


Phiên bản hiện tại: 1.1.0.1
Link download: Maintainer 1.1.0.1


Maintainer là tool giúp cho bạn giữ project được gọn gàng. Chức năng chính của Maintainer là giúp bạn tìm ra các lỗi hay gặp trong Scene mà bình thường dễ bị bỏ qua.

Hiện tại tool mới có tính năng Issues Finder, sau này tác giả có thể sẽ bổ sung nhiều tính năng mới tiện lợi hơn

Các chức năng chính: cho phép tìm kiếm các lỗi sau
  • Missing components
  • Duplicate components
  • Missing references
  • Objects with undefined tags
  • Instances of missing prefabs
  • Instances of disconnected prefabs
  • Different unused components
  • Empty array items
  • Objects with unnamed layers



Khi bạn nhấn vào nút Show trên giao diện trên, Maintainer sẽ tự động mở Scene chứa lỗi và nhảy đến trực tiếp GameObject bị lỗi.

Một số đặc tính:
- Hỗ trợ cả bản Pro lẫn bản Personal
- Tương thích với Unity4 và Unity5
- Bao gồm cả Source code đi kèm
- Dễ dàng sử dụng