एक सबव्यू के रूप में एकता का उपयोग मुझे एक ब्लैक स्क्रीन दे रहा है


9

मैं एंड्रॉइड के साथ यूनिटी का उपयोग कर रहा हूं और यह तब काम करता है जब दृश्य पूर्ण स्क्रीन में होता है, हालांकि जब मैं इसे एक सबव्यू में बनाता हूं, तो स्क्रीन कुछ भी प्रदर्शित नहीं करती है।

यहां छवि विवरण दर्ज करें

यह पूर्ण स्क्रीन के रूप में काम कर रहा है:

यहां छवि विवरण दर्ज करें

Intent intent = new Intent(this, UnityPlayerActivity.class);
intent.putExtra("arguments", "data from android");
startActivity(intent);

ये सवाल अनुत्तरित भी हैं:

मैंने उन समाधानों की कोशिश की है, लेकिन कोई भी काम नहीं करता है।

Android स्टूडियो में उप दृश्य के रूप में एकता दृश्य प्रदर्शित करें

/gamedev/134347/android-black-screen-with-unity-app-in-subview

एंड्रॉइड में ब्लैक स्क्रीन एकता सबव्यू

मेरी वर्तमान मुख्यता / एकता प्रकट:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        m_UnityPlayer = new UnityPlayer(this);
        int glesMode = m_UnityPlayer.getSettings().getInt("gles_mode", 1);
        boolean trueColor8888 = false;
        m_UnityPlayer.init(glesMode, trueColor8888);

        setContentView(R.layout.activity_main);

        FrameLayout layout = (FrameLayout) findViewById(R.id.frameLayout2);
        LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        layout.addView(m_UnityPlayer.getView(), 0, lp);
    }
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" xmlns:tools="http://schemas.android.com/tools">
  <application>
    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector" android:screenOrientation="landscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density" android:hardwareAccelerated="false">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
      <meta-data android:name="android.notch_support" android:value="true" />
    </activity>
    <meta-data android:name="unity.splash-mode" android:value="0" />
    <meta-data android:name="unity.splash-enable" android:value="True" />
    <meta-data android:name="notch.config" android:value="portrait|landscape" />
    <meta-data android:name="unity.build-id" android:value="46e01524-60a4-48fa-9d28-b231f5db3c5d" />
  </application>
  <uses-feature android:glEsVersion="0x00030000" />
  <uses-feature android:name="android.hardware.vulkan.version" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />
</manifest>

आप क्या एकता-संस्करण का उपयोग कर रहे हैं? एकता ने 2019.3.0 संस्करण में पूरे एंड्रॉइड-इंटीग्रेशन को फिर से काम किया। पुराने उत्तर नए एकीकरण के साथ काम नहीं करेंगे।
aalmigthy

मैं 2019.3.0f6 का उपयोग कर रहा हूँ तो बहुत नया है। आह कि समझ में आता है, लेकिन मैं खोज रहा हूं और इसके लिए कोई समाधान नहीं ढूंढ सकता हूं।
गंदे डेव

कृपया अपना पूरा मेनएक्टिविटी क्लास कोड प्रदान करें।
0xBFE1A8

1
एक पुस्तकालय के रूप में एकता पर एकता ब्लॉग के अनुसार, केवल पूर्णस्क्रीन का समर्थन किया जाता है।
लम्बरस्टरटिक

1
यहाँ केवल फुलस्क्रीन बताते हुए स्पष्टीकरण का लिंक दिया गया है: forum.unity.com/threads/… और यहाँ विशिष्ट Android एक है: forum.unity.com/threads/…
HoloLady

जवाबों:


0

आप इसे केवल फ़्रेम लेआउट का उपयोग करके प्राप्त कर सकते हैं, MainActivityजैसा कि बढ़ाया जाना चाहिए Activity, नहीं UnityPlayerActivity। गतिविधि में इन दो पंक्तियों को जोड़ें AndroidManifest.xml

<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />

काम कोड है:

main.xml

    <?xml version="1.0" encoding="utf-8"?>  
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:layout_width="match_parent" android:layout_height="match_parent"  
        android:rowCount="3"  
        android:columnCount="10">  

        <FrameLayout  
            android:layout_width="match_parent"  
            android:layout_height="250dip"  
            android:id="@+id/fl_forUnity"  
            android:background="#ff00ff15"  
            android:layout_column="4"  
            android:layout_row="0"  
            android:layout_alignParentTop="true"  
            android:layout_centerHorizontal="true">  

        </FrameLayout>  

        <Button  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:text="Rotate Right"  
            android:id="@+id/bt_rotRight"  
            android:layout_column="4"  
            android:layout_row="2"  
            android:layout_alignTop="@+id/bt_stop"  
            android:layout_toRightOf="@+id/bt_stop"  
            android:layout_toEndOf="@+id/bt_stop"  
            android:layout_marginLeft="30dp" />  

        <Button  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:text="Rotate Left"  
            android:id="@+id/bt_rotLeft"  
            android:layout_column="9"  
            android:layout_row="2"  
            android:layout_alignTop="@+id/bt_stop"  
            android:layout_toLeftOf="@+id/bt_stop"  
            android:layout_toStartOf="@+id/bt_stop"  
            android:layout_marginRight="30dp" />  

        <Button  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:text="Stop"  
            android:id="@+id/bt_stop"  
            android:layout_below="@+id/fl_forUnity"  
            android:layout_centerHorizontal="true"  
            android:layout_margin="10dip" />  

    </RelativeLayout>  

UnityPlayerActivity.java

    import android.widget.FrameLayout;  
    import android.widget.Button;  

    public class UnityPlayerActivity extends Activity  
    {  
        protected UnityPlayer mUnityPlayer; // don't change the name of this variable; referenced from native code  

        //Declare a FrameLayout object  
        FrameLayout fl_forUnity;  

        //Declare the buttons  
        Button bt_rotLeft;  
        Button bt_rotRight;  
        Button bt_stop;  

        // Setup activity layout  
        @Override protected void onCreate (Bundle savedInstanceState)  
        {  
            requestWindowFeature(Window.FEATURE_NO_TITLE);  
            super.onCreate(savedInstanceState);  

            getWindow().setFormat(PixelFormat.RGBX_8888); // <--- This makes xperia play happy  

            mUnityPlayer = new UnityPlayer(this);  
            if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))  
            {  
                setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);  
                getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,  
                        WindowManager.LayoutParams.FLAG_FULLSCREEN);  
            }  

            //setContentView(mUnityPlayer);  
            //Set the content to main  
            setContentView(R.layout.main);  

            //Inflate the frame layout from XML  
            this.fl_forUnity = (FrameLayout)findViewById(R.id.fl_forUnity);  

            //Add the mUnityPlayer view to the FrameLayout, and set it to fill all the area available  
            this.fl_forUnity.addView(mUnityPlayer.getView(),  
                    FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);  

            //Initialize the buttons from the XML file  
            this.bt_rotLeft = (Button) findViewById(R.id.bt_rotLeft);  
            this.bt_rotRight = (Button) findViewById(R.id.bt_rotRight);  
            this.bt_stop = (Button) findViewById(R.id.bt_stop);  

            /*Send a brodcast a message to the 'Main Camera' game object, passing L, R according to the 
            pressed buttons.*/  
            this.bt_rotLeft.setOnClickListener(new View.OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                    UnityPlayer.UnitySendMessage("Main Camera", "ReceiveRotDir", "L");  
                }  
            });  

            this.bt_rotRight.setOnClickListener(new View.OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                    UnityPlayer.UnitySendMessage("Main Camera", "ReceiveRotDir", "R");  
                }  
            });  

            this.bt_stop.setOnClickListener(new View.OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                    UnityPlayer.UnitySendMessage("Main Camera", "ReceiveRotDir", " ");  
                }  
            });  

            mUnityPlayer.requestFocus();  
        }  

मुझे उम्मीद है कि नीचे दिए गए संदर्भ URL आपकी मदद कर सकते हैं। एकता और Android CustomLayout और एकता और Android उप-दृश्य

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.