cant access variable due to its protection

i have to scripts one with the variable and one trying to access it
i cant access it even though it is public here are the two scripts the variable is called buildingActive

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

public class CardBoardFloor : MonoBehaviour {
	public static CardBoardFloor instace;

	public bool buildingActive;

    public float GroundY;

    public bool IsPlaced;

    public bool IsSnapped;

    public float MousePosX;
    public float MousePosY;

	void Start() {
		instace = this;
	}
    void Update () {

        //as long as not placed it will follow mouse and building is active
        if (!IsPlaced && !IsSnapped && !buildingActive) {
            BuildingManager.IsBuilding = true;

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit2;
            if (Physics.Raycast(ray, out hit2))
					this.transform.position = new Vector3(hit2.point.x, hit2.point.y, hit2.point.z);
			
			GroundY = hit2.point.y;
        }

        if (Input.GetMouseButtonDown(0)) {
            IsPlaced = true;
            BuildingManager.IsBuilding = false;
        }
        // release snap
        if (IsSnapped && !IsPlaced && Mathf.Abs(MousePosX - Input.GetAxis("Mouse X")) > .5f || Mathf.Abs(MousePosY - Input.GetAxis("Mouse Y")) > .5f)
        {
            IsSnapped = false;
        }
	}
}


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

public class invetory : MonoBehaviour {

	public CursorLockMode wantedMode;

	public CharacterController charMotor;

	public GameObject Inventory;

	public GameObject Inv;

	public GameObject BuildingManager;

	public Transform CardBoardFloorIcon;
	Transform CardBoardFloorIconClone;

	public string InventoryOpen = "false";

	// Use this for initialization
	void Start () {
		Inventory.SetActive (false);

		Inv = GameObject.Find("Canvas").transform.Find("Inventory").transform.Find("tans inv").gameObject;



	}

	// Update is called once per frame
	void Update () {

		Cursor.lockState = wantedMode;

        if (InventoryOpen == "false") {
            wantedMode = CursorLockMode.Locked;
        }

		if (InventoryOpen == "false" && Input.GetKeyDown (KeyCode.I)) {
			(GameObject.Find("Player").GetComponent("FirstPersonController") as MonoBehaviour).enabled = false;
			wantedMode = CursorLockMode.None;
			charMotor.enabled = false;
			Inventory.SetActive (true);
			BuildingManager.SetActive (false);
			CardBoardFloor.instace.buildingActive (true);
			InventoryOpen = "true";
			Cursor.visible = true;
			Cursor.lockState = wantedMode;
		} 
		else {
			if (InventoryOpen == "true" && Input.GetKeyDown (KeyCode.I)) {
				(GameObject.Find("Player").GetComponent("FirstPersonController") as MonoBehaviour).enabled = true;
				wantedMode = CursorLockMode.Locked;
				charMotor.enabled = true;
				Inventory.SetActive (false);
				BuildingManager.SetActive (true);
				CardBoardFloor.instace.buildingActive (false);
				InventoryOpen = "false";
				Cursor.lockState = wantedMode;
            }
		}

		if (Input.GetKeyDown (KeyCode.Alpha1)) {
			CardBoardFloorIconClone = Instantiate (CardBoardFloorIcon) as Transform;
			CardBoardFloorIconClone.transform.SetParent (Inv.transform);
		}
	}
}

Your syntax treats buildingActive like a function or a delegate. When it is actually a variable. You’ll want to assign it like this:

buildingActive = true;

Better yet, you can encapsulate it behind a method on CardBoardFloor:

public void SetBuildingActive(bool value) { buildingActive = true; }

If you do that, you can then make it private and use the method the way you did with SetActive:

CardBoardFloor.instace.SetBuildingActive(true);

You only need one of those options, though.