2013-09-29 26 views
5

Tôi có cùng một vấn đề như đã đề cập trong chủ đề này Integrating Unity with Eclipse: Back Button Click nhưng các giải pháp được đề xuất không hoạt động.Cách quay lại từ Unity Player sang Hoạt động Android đang chạy trước đó?

Tôi có Trình phát thống nhất được nhúng trong Ứng dụng Android gốc. Tôi có thể khởi động Unity Player mà không gặp vấn đề gì nhưng bây giờ tôi muốn quay lại hoạt động trước đó của mình bằng nút quay lại. Tôi đã thử Application.Quit từ Unity bên và kết thúc() từ phía android, cả hai đóng toàn bộ ứng dụng. Tôi cũng đã cố gắng để bắt đầu một hoạt động mới từ bối cảnh Unity nhưng điều này không làm việc, hoặc tôi nghĩ rằng điều này là bởi vì tôi làm việc với các mảnh vỡ. Thiết lập Hoạt động của tôi như sau:

MainActivity nơi một số đoạn được nhúng. Hai trong số chúng chứa Danh sách mà từ đó tôi có thể bắt đầu một Hoạt động mới cho tôi xem các chi tiết của các phần tử Danh sách. Các khung nhìn chi tiết cũng là các đoạn mà bạn có thể vuốt sang trái và phải sang phần tử trước đó/tiếp theo (tương tự như ứng dụng gmail). Từ bên trong khung nhìn chi tiết, bạn có thể bắt đầu Unity để có một số nâng cấp với khung công tác qualcomm vuforia.

tính đến thời điểm này mọi thứ hoạt động, nhưng tôi không thể quay lại từ UnityPlayer đến chế độ xem chi tiết.

Có ai có ý tưởng nào về cách đạt được điều này không?

Cảm ơn!

+0

Chỉ cần nhanh lên, thẻ Unity được dành riêng cho công cụ Unity của Microsoft. Được gắn thẻ lại dưới dạng Unity3D. – Jerdak

Trả lời

1

Tôi đang làm việc trên một dự án Android liên quan đến các đoạn Unity3d tại thời điểm này và có vẻ như tôi có vấn đề tương tự.

Theo như tôi biết, nó không phải là những mảnh vỡ - đó là Unity làm điều gì đó buồn cười như đánh chặn các sự kiện bấm nút quay lại. Những gì tôi đã làm là ghi đè phương thức dưới đây để xác định những gì đang xảy ra khi một nút quay lại được nhấn:

Vấn đề tôi phát hiện ra là đôi khi có tin nhắn đăng nhập xuất hiện khi tôi nhấn nút quay lại - tức là nó không thực sự đăng ký . Lúc đầu, tôi nghĩ rằng nó có liên quan đến UnityPlayer.pause() của tôi trong phương thức onResume() nhưng khi tôi chạy dự án một lần nữa sáng nay thì vấn đề vẫn tồn tại, và nó liên tục.

Nếu tôi tìm ra giải pháp, tôi sẽ chỉnh sửa bài đăng của mình trong chuỗi này. Tôi hy vọng giải thích là ít nhất một số trợ giúp.


Edit:

Có một cái nhìn tại liên kết này: Can't pass back event from Unity to android library jar. Có một giải pháp ở đó mà bạn có thể triển khai trong dự án Unity của mình để giúp xử lý thao tác nhấn nút quay lại.

Tôi đã làm điều đó và sau đó thực hiện một số thử nghiệm khác và có vẻ như phương pháp onBackPressed() được gọi ngay khi đối tượng UnityPlayer bị tạm dừng NOT. Điều này khiến tôi tin rằng phương pháp UnityPlayer.pause() chỉ nên được sử dụng khi ứng dụng của bạn được đặt trong nền, chứ không phải khi bạn không cần mô hình Unity tại thời điểm đã cho.

4

Khi bạn quay lại báo chí trong hoạt động đoàn kết toàn bộ quá trình sẽ bị giết. Vì vậy, khi bạn bắt đầu một hoạt động thống nhất thông qua hoạt động Android, hãy bắt đầu hoạt động đoàn kết trong quá trình khác nhau. Bạn có thể làm điều này bằng cách tuyên bố điều này trong tệp kê khai android của dự án.

+0

Điều này đã giải quyết được. Đã tìm kiếm câu trả lời cho điều này trong một vài giờ ngay bây giờ. Cảm ơn bạn;) –

2

Bạn nên thêm AndroidManifest.xml dòng mã tiếp theo cho UnityActivity.java:

<activity 
     android:name=".ui.activities.UnityPlayerActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTask" <-- THIS 
     android:process=":unityplayer" <-- AND THIS 
     ...  
    > 
     ... 
    </activity> 

Nó sẽ chạy UnityActivity như một quy trình khác và lệnh Unity: Application.quit(); Sẽ chỉ đóng Quy trình thống nhất.

Ngoài ra nếu nó không đủ, bạn có thể thêm những dòng đó vào hoạt động khởi động UnityActivyty. Nhưng hãy cẩn thận, một hoạt động đóng gói khác sẽ cung cấp hầu hết các chia sẻ riêng của mình và một số nội dung khác.

+0

Làm việc như một sự quyến rũ, giờ đây Unity không giết hoạt động/ứng dụng trước đó. Cảm ơn bạn – Pelanes

0

// Chỉ cần thêm hai mã dòng dưới đây vào biểu thức mô-đun Unity của bạn. dưới UnityPlayerActivity

 android:launchMode="singleTask" 
     android:process=":unityplayer" 

Và Unity lại nút sự kiện click thêm dưới đây đang Application.quit();

Làm việc cho tôi một cách hoàn hảo

Các vấn đề liên quan