unityで良く使う共通処理ってどんな風に書けば良いかわかりません。

現在は
publicFunc.csに

namespace A {
  public class publicFunc : MonoBehaviour {
    static public int serachLayerNo(Animator _Animator, string targetLayerName){
      〜処理〜
    }
  }
}
と書いて
呼び出し側で
using UnityEngine;
using System.Collections;
using A;
〜略〜
layerNo[i] = A.publicFunc.serachLayerNo(mAnimator, layerStr);

という風にしてみました。

namespace Aとつけているのは現状このようにしたらできたからやっているのでよくわかってないです・・・
また というかインスタンスを作ってないのになんでクラスの関数呼び出せるのかも自分でわかっていないという・・・staticだから?

またこれだと複数の箇所で使うと関数にstaticがついてるから、値が共通になってしまうのでCanvasを複数つかうとバグるような気がしてます。

こういう共通した関数を実行するのはシングルトンを使う文献をネットでよくみかけるのですが
シングルトンはインスタンスを一つしかつくらないということなので尚更だめなような気がしてます。

単独ではつかわない(ゲームオブジェクトとかにセットしない)いろんな所のソースで呼び出す共通処理の書き方をお教え頂きたいです。