Android Game und Unity

  • Antworten:17
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 7

01.07.2018, 11:52:30 via Website

Hallo zusammen,
ich bin neu hier und stelle deshalb einmal kurz was ich vorhabe.

Ich bin absoluter Anfänger in Sachen Programmiersprachen und Programmierung. Mittlerweile habe ich mich allerdings schon etwas in Java eingelesen sowie mit Android Studio und Unity etwas herumprobiert.

Mein Ziel ist es ein Android Game zu programmieren.
Es soll eine Art Point and Click Adventure werden, mit Ruegelike-Elemten. Es soll ohne große Animationen auskommen, in 2D sein und auf statischen Bildern basieren.
Die Grafiken dafür will ich ebenfalls selbst erstellen.

Hier schon einmal meine erste Frage, welche Programmiersprache soll ich für das Android Game lernen, um es in Unity programmieren zu können?
Unity soll zwar Java unterstützen, hat seine Scripte allerdings (zumindest meiner Ansicht nach) in C#.
Könnte ich in diesen teils vorgefertigten Scripten von Unity einfach Java Befehle einfügen, oder müsste ich sie in Java umschreiben?

Und wenn sie in C# bleiben müssen damit Unity sie versteht, wie wird es dann später für Android verständlich gemacht?

Ich hoffe ihr versteht wenigstens teilweise was ich meine ^^"
Wie gesagt ich bin noch Neuling und bisher noch nicht einmal in der Lage, zwei Zeilen Java richtig zu schreiben...

Vielen Dank schon einmal im Vorraus und wenn ihr Fragen an mich habt, fragt ruhig.

Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

01.07.2018, 12:12:11 via Website

Hallo Federkiel,

Herzlich wilkommen hier im Forum :)



Für Android Apps an sich bracuhst du Java, für Unity C#.
Ergo must du beide Sprachen beherrschen, wenn du Unity in Zusammenhang mit Android nutzen willst.
Aber:
Da du anfänger bist, beschäftige dich erstmal mit Java an sich. D.h. erst mal Java Kommandozeile am PC für OOP Prinzip und alle Grundlagen (Datentypen, vererbung etc..)
Dann kannst du mit "normalen" Android Apps in reinem Java weiter machen.
Wenn du das kannst, dann schaust du dir C# an und merkst, dass es sich von Java kaum unterscheidet.
Ledilich die schreibweise ist etwas anders:

Java myObject.toString();
C#: myObject.ToString();
etc...

Ich programmiere beides regelmäßig und muss sagen, dass ich schon garnicht mehr groß zwischen Java und C# unterscheide, weil es so Ähnlich ist. (Die API ist allerdings doch etwas anders, aber kann man ja nachlesen)

Aber ohne Java + Androidgrundlagen kommst du nicht weit, d.h. das braucht du zuerst.

Zum technischen: Unity erstellt dir aus dem C# code compilte Libs, die du wieder in die reine Java Android App einbinen kannst. Dadurch verbindest du beide Systeme.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 484

01.07.2018, 14:37:59 via Website

@Pascal P. besser kann man es nicht erklären.

Hallo Federkiel,
von mir auch ein Herzliches wilkommen im Forum.

— geändert am 01.07.2018, 14:49:23

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.498

01.07.2018, 21:43:21 via App

Soll das ein professionelles Projekt werden oder nur persönlich?
(also schwebt dir ein Playstore release vor? Oder nur ins programmieren reinfinden?)

— geändert am 01.07.2018, 21:43:58

Liebe Grüße, Rexxar :)
Moto Z Play Stock
Nvidia Shield Tablet K1
http://www.androidpit.de/forum/634540/allgemeines-faq-fuer-neulinge

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 7

03.07.2018, 11:28:25 via Website

@Pascal P.: Danke für die schnelle und informative Antwort. Ich arbeite mich momentan mit Eclipse in Java ein. Wenn ich das einigermaßen beherrsche, werde ich in Android Studio ein paar Probe-Apps erstellen.

@Jokel: Dankeschön.

@Rexxar: Schlussendlich soll das Projekt im Playstore landen (kostenlos, ohne Werbung oder ingame-Käufe, evtl. ein Spendenbutton). Um in ins Programmieren hinein zu finden, werde ich vorher ein paar Testprojekte erstellen, die auf meinem PC bleiben.

Mein Projekt wird also "etwas" länger dauern. Schließlich will ich, dass das Ergebnis auch ordentlich gemacht ist.
Für das was ich vorhabe, brauche ich Unity scheinbar nicht. Denn dynamisches Licht, Kollilisionen etc. habe ich bisher nicht eingeplant. Die Frage ist also, ob ich Unity also überhaupt brauche.
Auf dem Playstore gibt es bereits eine App, die meinem Projekt sehr ähnlich ist: "Dark of Alchemist" vielleicht kennt die jemand, das Grundsystem ist ähnlich wie das von mir geplante.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 7

19.07.2018, 23:35:18 via Website

Ich bins nochmal.
Mittlerweile habe ich mich in Java etwas eingearbeitet und mache gerade das offizielle Tutorial von Android Studio. Ich habe allerdings an dieser Stelle Probleme:

You may see an error because Android Studio cannot resolve the View class used as the method argument. So click to place your cursor on the View declaration, and then perform a Quick Fix by pressing Alt + Enter (or Option + Enter on Mac). (If a menu appears, select Import class.)
Now return to the activity_main.xml file to call this method from the button:
Click to select the button in the Layout Editor.
In the Attributes window, locate the onClick property and select sendMessage [MainActivity] from the drop-down list.

Das Tastenkürzel um die Klasse zu importieren funktioniert bei mir nicht, ich habe bereits in den Einstellungen die erforderlichen Häckchen gesetzt... was aber nichts brachte.

Ohne die Klasse in dieses Menü einfügen zu können, komme ich nicht weiter...

Ich hoffe einer von euch hat eine Lösung.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.907

20.07.2018, 07:25:49 via Website

Moin,

Ohne die Klasse in dieses Menü einfügen zu können, komme ich nicht weiter...

Warum auch immer deine Installation sehr wahrscheinlich strubbelig ist :

Suche in der offiziellen API Docu nach der Klasse, die du benötigst und füge den Import dann manuell ein . Dann kommst du auch weiter.

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 484

20.07.2018, 09:13:46 via Website

Hi mal eine zwischen Frage. Um welche Klasse handelt es sich? Mit Alt+ Enter wird kein Quellcode importiert sondern nur die entsprechende Import Anweisung am Klassen Anfang.
Wenn das zu Beispiel eine selbst geschriebene Klasse ist und die noch Fehler hat klappt der Import oft nicht.
Also um welche Klasse oder um welche Anweisung genau handelt es sich wo das Alt+Enter nicht geht.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 7

20.07.2018, 22:11:10 via Website

@Jokel: Hier mal der bisherige Code.

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.EditText;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); //wird aus der superklasse übernommen
    setContentView(R.layout.activity_main); //macht sie zur main activity

    public void sendMessage(View view) {       <--- hier soll Alt+Enter eingesetzt werden

}
}

----Das Problem ist die zuletzt genannte Methode, diese soll bewirken dass nach einem Klick auf den Button eine neue Activity aufgerufen wird (wenn ich es richtig verstehe ein Action listener…) und die classe importiert werden soll----
Anschließend soll die Methode hier aufrufbar sein, um eine Verlinkung zu erstellen...

image

----Dies ist der Button (Auszug aus der activity_main.xml) auf den reagiert werden soll---

 <Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="16dp"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginStart="16dp"
    android:onClick=""   <---- hierdurch sollte schließlich die Verlinkung entstehen
    android:text="@string/button_send"
    app:layout_constraintBaseline_toBaselineOf="@+id/editText"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toEndOf="@+id/editText" />

Ein ewig langer Post und wahrscheinlich nur eine Kleinigkeit ^^"
Die Codeschnipsel sind um Jokels Frage zu beantworten (was sie hoffentlich tun).

@swa00: Werde ich machen, danke dir.

— geändert am 20.07.2018, 22:20:18

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 484

20.07.2018, 22:27:58 via Website

Hi dein Problem ist das du die neue Methode sendMessage noch innerhalb der Methode onCreat zu erstellen versuchst.
Mache die onCreate erst mit der gescheiften Klammer zu.
Und erst danach die neue Methode "sendMessage".
Dann geht es auch und auch im layout kannst du die Methode bei in klick eintragen.

Immer öffnende und schließende Klammern beachten.

diese soll bewirken dass nach einem Klick auf den Button eine neue Activity aufgerufen wird

Das ist deine onklick Methode was du darin machst ist deine Sache klar kannst du da auch eine neue activity starten.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 7

23.07.2018, 21:01:10 via Website

Danke für die Antwort, habe mittlerweile den Weg gefunden der mich zu meiner Activity führt ^^"

Hier gleich die nächste Frage, ich habe für einen immersive Modus folgenden Code in meinen Activitys:

private void hideSystemUI() {
    // Enables regular immersive mode.
    // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
    // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    // Hide the nav bar and status bar
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN);
}

Er funktioniert auch wie er soll, allerdings wird jedesmal wenn ich die Activity in der App wechsle kurz die Statusleiste etc eingeblendet um gleich wieder zu verschwinden... hat einer ne Idee wie ich das unterbinde?

Die Manifest-Variante für den Immersive Modus kenne ich, nutze sie aber nicht weil sie angeblich zu fehlern führt.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 484

23.07.2018, 21:52:59 via Website

Hallo wann und wo fürst du diese Methode denn aus?

Wer oder was sagt dir das die Variante über das manifest zu Fehlern führt.?

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.907

23.07.2018, 22:40:20 via Website

Hallo,

Er funktioniert auch wie er soll, allerdings wird jedesmal wenn ich die Activity in der App wechsle kurz die Statusleiste etc eingeblendet um gleich wieder zu verschwinden... hat einer ne Idee wie ich das unterbinde?

Das wirst Du auch nicht System-Übergreiffend unterbinden können .
Es gibt Unterschiede je nach Versionsstand, wie auch sehr oft Kernel/Hardware abhängig.

Grundsätzlich wird auch Deine Methode nicht zuverlassig arbeiten , denn du musst auch auf
entsprechende Listener reagieren

 decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener()
{
    @Override
    public void onSystemUiVisibilityChange(int visibility)
    {
      if ( mLayoutOptions != 0) decorView.setSystemUiVisibility(mLayoutOptions);
    }
}) ;

Desweiteren ist die komplette Unterbindung der Statusleiste auch nicht möglich , da diese
periodisch vom System aktiviert wird. (Alleine bei Focus-Änderung)

Work-Arounds gibt es einige - am Besten erreichst du es mit Shells, die i.d.R. dann
eher abgedeckt werden .

Bsp :

settings put global policy_control immersive.status=*
.
.

Kleine Anmerkung :
Ich denke deine Flags sind zu wenig, Nimm mal diese hier

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
mLayoutOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION|
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE;

— geändert am 24.07.2018, 07:27:19

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 7

24.07.2018, 15:07:07 via Website

@Jokel: Direkt am Beginn der Activity=

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class EigeneEingabe extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_eigene_eingabe);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        hideSystemUI();
    }
}

private void hideSystemUI() {
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN);

}

Den Code dazu habe ich von der Seite "Android Developer" ich dachte die werns schon wissen...

Und dass die Manifestvariante zu Fehlern führt habe ich auf ein zwei Internetseiten gelesen. Da ich vieles noch nicht kann sehe ich mir meist codes von anderen an. Meist verstehe ich sie dann auch oder arbeite sie eben durch.

@swa00: Ich glaube das mit der Immersiv Funktion überfordert mich etwas... ich sollte als Anfänger mich wohl eher mit standart-Programmierung befassen. (Wechseln von activitys, grafiken einfügen, einfache Methoden,etc)
Dennoch: Die zusätzlichen Flags habe ich getestet und hinzugefügt, konnte allerdings keinen (zumindest sichtbaren) unterschied feststellen.
Diese "Shells" scheinen mir am sinnvollsten, allerdings weiss ich gerade nicht was ich mit deinem vorgeschlagenen Code anfangen soll und fand zu dem Thema auch keine weiteren Infos im Netz...
Könntest du mir das mit den Shells kurz erklären oder einen Link dazu geben?

PS.: Sorry, bin wirklich noch Anfänger, wenn ich euch auf die Nerven geh sagts...

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.907

24.07.2018, 15:15:41 via Website

Diese "Shells" scheinen mir am sinnvollsten, allerdings weiss ich gerade nicht was ich mit deinem vorgeschlagenen Code anfangen soll und fand zu dem Thema auch keine weiteren Infos im Netz...
Könntest du mir das mit den Shells kurz erklären oder einen Link dazu geben?

Ich gehe auch grundsätzlich davon aus dass du einen Ablauf/Verständigungs-Fehler hast.
Eine Activity macht auch Einiges an "init-Krempel" der natürlich - wenn nicht absolut richtig programmiert - dir deine Statusleiste zum Vorschein bringt - Das ist normal.

Wenn du das alles vermeiden möchtest , so solltest du nur mit EINER Activity arbeiten und den Rest in Frames ( Pages) bedienen.

Und was die Shells betrifft :
Das ist vielleicht ein wenig falsch von mir verfasst : Ich wollte damit zum Ausdruck bringen , dass du ins System eingreiffen musst , wenn du eine Appinitialisierung ( resp Activity) "aushebeln" möchtest.
Den Shell wie oben bekommst du i.d.R. nur bei einem gerootetem Smartphone hin.

— geändert am 24.07.2018, 16:20:51

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 484

24.07.2018, 16:03:25 via Website

Hi wenn du das von Anfang an nicht haben willst musst du die Methode auch in der onCreate aufrufen.
denn da wird dein layout geladen und da musst du es auch gleich ändern.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 7

25.07.2018, 22:35:19 via Website

@Jokel: Danke, hat geholfen.

@swa00: Stimmt, mit dem Ablauf komme ich bisher nicht wirklich klar. Ich arbeite zwar Tutorials durch, die arbeiten allerdings alle unterschiedlich. Oder setzen Sachen voraus die ich noch nicht beherrsche.
Mein Grundlegendes Problem ist, dass ich nicht weiss wie ich das ganze aufbauen soll.
Ich hatte es zbsp.: bisher so verstanden, dass für jedes Menü, Benutzeroberfläche, etc. eine eigene Activity gebraucht wird auf der dann die Texte, Buttons, etc. eingefügt bzw. angezeigt werden.

Bisher habe ich noch kein Tutorial gefunden, welches mir das erklärt: Wie der Grundaufbau in Android Studio erstellt wird, um eine App zu erstellen, die über mehrere Menüs (zbsp. dem Inventar der Spielfigur), eine Benutzeroberfläche (zbsp. mit Buttons für "Angriff", "Verteidigung", etc.) usw... verfügt.

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 2.907

25.07.2018, 22:54:50 via Website

Ich hatte es zbsp.: bisher so verstanden, dass für jedes Menü, Benutzeroberfläche, etc. eine eigene Activity gebraucht wird auf der dann die Texte, Buttons, etc. eingefügt bzw. angezeigt werden.

Nein , so ist das nicht .

Nun , Dir jetzt zu erklären würde natürlich den Rahmen einer Forenhilfe sprengen und einer Schulung gleich kommen.

Im Grunde genommen brauchst du nur eine Activity und in dieser wechselt man i.d.R. Views aus
Das können zum Beispiel Pages sein (Sliden), Frames oder nur schlichtweg Views- je nachdem , was man unsetzten möchte.- Die Variationen sind vielfältig.

Und für eine grafische Anzeige benutzt man z.B. ein abgeleitetes View und überschreibt das onDraw.
Das kann aber auch ein SurfaceView sein .

Weitere - ich nenne sie mal Sub-Activities - benutzt man z.B. für ein Setup

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Diskutiere mit!

Empfohlene Artikel