Hide but no deactivate a gameobject

Is there any way to hide a GameObject without using setActive?
I could disable the render component, but it has many children it’s a bit complicated.
Any idea?

For me the best way is to disable all renderer as you said but it’s not really complicated ^^

foreach (Transform child in transform) {
  child.gameObject.GetComponent< Renderer >().enabled = false;
}
GetComponent< Renderer >().enabled = false;

if it’s really a huge object make a recurcive

void Start() {
  recDisabler(transform);
}

private void recDisabler(Transform t) {
    if (t.childCount > 0) {
        foreach (Transform child in t) {
            recDisabler(child);
        }
    }
    t.gameObject.GetComponent< Renderer >().enabled = false;
}

Change the Alpha Value on the Material its using to 0, this will make it invisible.

Just because I was looking for this and found what I think might be a useful alternative:

public class ActiveButHidden : MonoBehaviour
{

    public List<GameObject> targets;

    void Start()
    {
        StartCoroutine(ReEnable());
    }

    IEnumerator ReEnable()
    {
        while (true)
        {
            yield return new WaitForEndOfFrame();
            foreach (GameObject go in targets)
            {
                go.SetActive(true);
            }
        }
    }

    private void LateUpdate()
    {
        foreach (GameObject go in targets)
        {
            go.SetActive(false);
        }
    }

}

Drop this on a game object that’s always active, and add any game object you want active but hidden into the list of targets. This script will turn them (and their children) off before they are gathered for rendering, and back on before they are gathered for the next round of fixedupdate/update.

CAVEAT:

Any coroutines running on an object are destroyed forever when you make that object inactive, so you can’t use this method to hide objects that are running coroutines.