How to make a static class with easily accessible but still editable members?

I’m trying to make an RTS game with different resources like carbon, steel, etc. and i want to set these resources in the inspector. They are defined in a script called “Resources” and i want to be able to use it like: Resources.Carbon, Resources.Steel, etc. Problem is if I make them static then i wont be able to set sprites for them or change their values. The script which contains the class from which I want to inherit from all the minerals:

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

public class Resources : MonoBehaviour {
		
	public class Mineral {
		public string name;
		public Sprite icon;
		public float richness;
	}
}

How should I write my code so that the sprite and the name are static, the derived minerals can be accessed from anywhere with Resources.Mineralnamehere, and the richness can be changed depending on the planet the resource is on, AND i can set their sprites and values inside the inspector?

I would suggest using a singleton for this, you can then access all the variables from any class by: Resource.instance.myMaterial . Note however that a singleton class can only have one instance.

public class Resource : MonoBehaviour {

	public static Resource instance;
	public Mineral[] minerals;

	void Awake(){
		if (instance == null) {
			instance = this;
		} else {
			Destroy (this);
		}
	}
	[System.Serializable]
	public class Mineral{
		public string name;
		public Sprite icon;
		public float richness;
	}
}