Есть абстрактный класс Component. Его наследуют все компоненты компьютера.
В классе Component есть абстрактный метод GetInfo.
Каждый компонент реализует его. И вызывает метод ShowInfo ( включает канвас, выводит информацию на канвасе ).
Метод ShowInfo - статичный.
Значит переменные, хранящие ссылки на канвас, текст и другие штуки тоже будут статичными. Но тогда в эти переменные я не могу занести значения через инспектор. Что делать?
Класс Buyusing UnityEngine;
using TMPro;
public class Buy : MonoBehaviour
{
[Header("Processor info")]
[SerializeField] GameObject _processorCanvas;
[SerializeField] TMP_Text _processorPriceText;
[SerializeField] TMP_Text _processorCoresAmount;
[SerializeField] TMP_Text _processorThreads;
[SerializeField] TMP_Text _processorSocket;
[SerializeField] TMP_Text _processorName;
private void ShowInformation(Processor processor)
{
_processorName.text = processor.Name;
_processorCoresAmount.text = processor.CoresCount;
_processorThreads.text = processor.Threads + "GHZ";
_processorSocket.text = processor.SocketName;
_processorPriceText.text = processor.Price;
_currentProcessor = processor;
_processorCanvas.SetActive(true);
}
Основаusing System;
using System.Collections.Generic;
public class Program
{
public abstract class Component
{
protected string _name;
public Component(string name)
{
_name = name;
}
public string Name {get { return _name; } }
public abstract string GetInfo();
}
public class CPU : Component
{
private string _freq;
private string _cores;
public CPU(string name, string freq, string cores) : base(name)
{
_freq = freq;
_cores = cores;
}
public override string GetInfo()
{
Buy.ShowInfo(this) // Одна из перегрузок.
}
}