Bir android kütüphane projem var ve Unity projesinde kütüphane projesini içe aktardım. Şimdi, android kütüphane projesi tarafından verilen cevaba göre yürütülecek Birlik projesinde bir geri arama uygulamak istiyorum. UnityPlayerActivity'den (Android Project) Call Script File yöntemini söylemek istiyorum. Şu kod ama hiçbir şey sınırının altında kullanıyorum Unity içinde Callback Dinleyicisi - Android'de UnityPlayerActivity'den komut dosyası yöntemi nasıl çağrılır?
olur:UnityPlayer.UnitySendMessage("Main Camera","showMessage",errorMessage);
Main Camera
benim Oyun Nesne olduğunu. showMessage
, Komut Dosyası dosyasında mesaj adıdır. Message
, Android Etkinliği aracılığıyla Unity'de görüntülenecek mesajdır.
Lütfen aşağıdaki kodumu Unity Script Dosyası ve Android Etkinliği'ne bakın.
Birlik Script Dosyası:
using UnityEngine;
using System.Collections;
public class scriptfile : MonoBehaviour {
// Use this for initialization
void Start() {
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("shareText","236","236");
}
void showMessage(string message){
print ("hello");
Debug.Log ("hello");
}
}
Android Dosya UnityPlayerActivity:
/**
* Created by CH-E01073 on 28-09-2015.
*/
public class MainAct extends UnityPlayerActivity implements RegistrationListener,BOffersListener {
Context context;
SharedPreferences prefs ;
String AppIds="";
String PublisherIDs="";
public void shareText(String AppId,String PublisherID) {
context=MainAct.this;
prefs = PreferenceManager
.getDefaultSharedPreferences(context);
Log.e("AppID", AppId);
Log.e("PublisherID",PublisherID);
AppIds=AppId;
PublisherIDs=PublisherID;
runOnUiThread(new Runnable() {
@Override
public void run() {
UnityPlayer.UnitySendMessage("Main Camera","showMessage","Start UI Thread");
if (prefs.getString(FreeBConstants.ID, null) == null
|| prefs.getString(FreeBConstants.ID, null).equals("")
|| !Build.VERSION.RELEASE.equals(prefs.getString(
FreeBConstants.VERSION, null))
|| !FreeBCommonUtility.getDeviceId(context).equals(
(prefs.getString(FreeBConstants.DEVICE_ID, null)))) {
BSDKLogger.enableLogging(true);
SDKRegistration.initialize(MainAct.this, getApplicationContext(), AppIds,PublisherIDs);
}else{
Offers Offers = new Offers(MainAct.this);
Offers.setOnFreeBOffersListener(MainAct.this);
Offers.setTitle(
"Pick Any Offer to unlock your premium features",
"#FFFFFF", "#FF6D00");
}
}
});
}
@Override
public void onOffersLoaded(String code,String freeBOffers) {
CommonUtility.showToast(getApplicationContext(), code);
UnityPlayer.UnitySendMessage("Main Camera","showMessage",freeBOffers);
}
@Override
public void onShowOffers() {
UnityPlayer.UnitySendMessage("Main Camera","showMessage","Show Offers");
}
@Override
public void noOfferInstalled(String s, String s2) {
}
@Override
public void onLeaveApplication(String s, String s2) {
}
@Override
public void onDialogDismiss(String s) {
}
@Override
public void onOffersFailed(String code, String errorMessage) {
FreeBCommonUtility.showToast(getApplicationContext(), errorMessage);
UnityPlayer.UnitySendMessage("Main Camera","showMessage",errorMessage);
}
@Override
public void onOffersInstallSuccess(String code, String errorMessage) {
FreeBCommonUtility.showToast(getApplicationContext(), errorMessage);
}
@Override
public void onOffersInstallFailure(String code, String errorMessage) {
FreeBCommonUtility.showToast(getApplicationContext(), errorMessage);
}
@Override
public void onRegistrationFailed(String code, String errorMessage) {
FreeBCommonUtility.showToast(getApplicationContext(), errorMessage);
UnityPlayer.UnitySendMessage("Main Camera","showMessage",errorMessage);
}
@Override
public void onRegistrationSuccess(String code, String errorMessage) {
// FreeBCommonUtility.showToast(getApplicationContext(), errorMessage);
Log.e("SUCCESS", errorMessage);
// TODO Auto-generated method stub
UnityPlayer.UnitySendMessage("Main Camera","showMessage",errorMessage);
Offers Offers = new Offers(MainAct.this);
Offers.setOnFreeBOffersListener(MainAct.this);
Offers.setTitle(
"Pick Any Offer to unlock your premium features",
"#FFFFFF", "#FF6D00");
}
}
Herkes bana yardımcı olabilir bu konuda kurtulmak için?
emin komut Ana Kamera ile ekli Make Java yöntemine (denir GameObject) C# arabirimini geçirin. ref http://answers.unity3d.com/questions/366452/call-a-unity-script-function-from-android-java-cod.html – Vivek
evet vivek, halihazırda doğru şekilde eklenmiş. – user1986760
Kişisel olarak Unity mesajlaşma sistemini beğenmedim, neden geri arama için bir arayüz kullanmıyorsunuz? –