Die Verwendung der C#-Vererbung in der Unity-Spielproduktion

Inhaltsverzeichnis

1. Erstellen Sie eine Basisklasse

Erstellen Sie zweitens eine abgeleitete Klasse

3. Wann sollte Vererbung verwendet werden?


1. Erstellen Sie eine Basisklasse

Erstellen Sie ein Basisklassen-Codeelement in Einheit. Dieses Skript muss nicht auf einem Objekt bereitgestellt werden, und alle Methoden im Basisklassencode werden von abgeleiteten Klassen geerbt.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Item : MonoBehaviour
{
    public float rotateSpeed = 180.0f;//旋转的速度
    public GameObject hitEffect;//碰撞效果
    void Update()
    {

        transform.Rotate(0, rotateSpeed * Time.deltaTime, 0);//物体旋转
    }
    public virtual void HitItem()
    {
        GameObject effect = Instantiate(hitEffect);//初始化粒子对象
        effect.transform.parent = PlayerControl.instance.gameObject.transform;
        effect.transform.localPosition = new Vector3(0, 0.5f, 0);
        Destroy(gameObject);//当前物体消失
    }

    //触发器,other是碰撞到物体的主角
    public virtual void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player")
        {
            HitItem();    
            //Destroy(gameObject);//当前物体消失
        }
    }
}

In dieser Parkour-Spieldemo entsteht die Basisklasse für Goldmünzen, Laufschuhe und andere Gegenstände. Diese Gegenstände drehen sich während des Betriebs automatisch, und der Protagonist verschwindet, wenn er berührt wird, und löst verschiedene Funktionen aus. Diese Methoden sind die gleichen. Um nicht jeden Gegenstandscode einmal schreiben zu müssen, erstellen Sie eine Basisklasse, die diese Methoden enthält. Da jedoch die in jedem Element verwendeten Funktionen unterschiedlich sind, wird in der Basisklasse eine virtuelle Methode verwendet, um das Umschreiben in jeder abgeleiteten Klasse zu erleichtern

Erstellen Sie zweitens eine abgeleitete Klasse

Erstellen Sie ein abgeleitetes Klassenskript und montieren Sie es auf entsprechenden Objekten wie Goldmünzen und Laufschuhen

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Coin : Item
{
    public override void OnTriggerEnter(Collider other)
    {
        base.OnTriggerEnter(other);
        
        if (other.tag == "Player")
        {
            AudioManager.instance.PlayCoinAudio();
            GameAttribute.instance.addcoin();//金币数递加
        }
    }
    
}

Übernehmen Sie die Funktion der Methode in der Basisklasse, z. B. Goldmünzenrotation, Goldmünze verschwindet, wenn sie den Protagonisten berührt. Es hat auch seine eigenen einzigartigen Funktionen.Der obige Code schreibt den Inhalt der OnTriggerEnter(Collider other)-Methode um und fügt eine if-Anweisung auf der Grundlage der Vererbung der Basisklasse hinzu.Der Soundeffekt des Essens von Goldmünzen, die Realisierung dieser beiden Funktionen ist der Unterschied zwischen Goldmünzen und anderen Gegenständen.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Shoe : Item
{
    public override void OnTriggerEnter(Collider other)
    {
        base.OnTriggerEnter(other);
        if(other.tag=="Player")
        {
            AudioManager.instance.PlaygetitemAudio();
            PlayerControl.instance.UseShoe();
        }
    }
}

Wie Goldmünzen erbt es die Methoden- und Funktionsimplementierung der Basisklasse.Der Unterschied besteht darin, dass die zusätzliche Funktion beim Umschreiben der virtuellen Methode darin besteht, dass Sie, nachdem Sie die Laufschuhe erhalten haben, doppelt springen und Soundeffekte abspielen können.

Der Doppelsprung der Laufschuhe und die Erhöhung der Goldmünzen des Protagonisten sind in anderen Codes geschrieben, und die beiden oben abgeleiteten Klassencodes rufen nur ihre Methoden auf.

3. Wann sollte Vererbung verwendet werden?

Wenn mehrere Objekte dieselbe Methode verwenden, wie z. B. eine Vielzahl von Feinden, Gegenständen usw., kann dieselbe Funktionsmethode in der Basisklasse geschrieben werden

Inhaltsverzeichnis

1. Erstellen Sie eine Basisklasse

Erstellen Sie zweitens eine abgeleitete Klasse

3. Wann sollte Vererbung verwendet werden?

Viertens verwendet der Singleton-Modus die Basisklasse


using UnityEngine;
 
public class PlayerControl : MonoBehaviour
{
 
    public static PlayerControl instance;//单例
 
    private void Awake()
    {
        Instance = this;//初始化
    }
}
PlayerControl.instance.UseShoe();//调用基类方法

Supongo que te gusta

Origin blog.csdn.net/qq_57388481/article/details/127717780
Recomendado
Clasificación