CS0118 error in Unity "player is a namespace but a type has expected

Asked

Viewed 214 times

1

Who can help me, I am in great need. It is a project for a game in Unity 2d:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//using player ;
//using Monobehaviour;
namespace player
{
}
namespace teste {


abstract class pl2  {
}   

}


 //namespace Monobehaviour{
namespace Player {


//public class Player : Monobehaviour{


public class player2 {

    //pl1  player = new Player ();


    player2 pl = new pl2 () ;


    void OnTriggerEnter2D(Collider2D other){

        if(other.gameObject.tag == "Player"){
            other.gameObject.GetComponent<Player>().alive = false;
            Time.timeScale = 0; 
        }
    }


    void Start () {
        Time.timeScale = 1;

        pauseObjects = GameObject.FindGameObjectsWithTag("ShowOnPause");            //gets all objects with tag ShowOnPause
        finishObjects = GameObject.FindGameObjectsWithTag("ShowOnFinish");          //gets all objects with tag ShowOnFinish

        hidePaused();
        hideFinished();

        if(Application.loadedLevelName == "MainLevel")
            playerController = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>();
    }


    void Update () {

        if(Input.GetKeyDown(KeyCode.P)){
            if(Time.timeScale == 1 && player.alive == true){
                Time.timeScale = 0;
                showPaused();
            } else if (Time.timeScale == 0 && player.alive == true){
                Time.timeScale = 1;
                hidePaused();
            }
        }
    }

    public void Reload(){
        Application.LoadLevel(Application.loadedLevel);
    }


    public void pauseControl(){
        if(Time.timeScale == 1){
            Time.timeScale = 0;
            showPaused();
        } else if (Time.timeScale == 0){
            Time.timeScale = 1;
            hidePaused();
        }
    }

    public void showPaused(){
        foreach(GameObject g in pauseObjects){
            g.SetActive(true);
        }
    }

    //hides objects with ShowOnPause tag
    public void hidePaused(){
        foreach(GameObject g in pauseObjects){
            g.SetActive(false);
        }
    }

    //shows objects with ShowOnFinish tag
    public void showFinished(){
        foreach(GameObject g in finishObjects){
            g.SetActive(true);
        }
    }

    //hides objects with ShowOnFinish tag
    public void hideFinished(){
        foreach(GameObject g in finishObjects){
            g.SetActive(false);
        }
    }

    //loads inputted level
    public void LoadLevel(string level){
        Application.LoadLevel(level);
    }       



    GameObject [] pauseObjects;
    GameObject [] finishObjects;
    player Player;

    }


    }
  • wasn’t supposed to be player2 instead of player?

1 answer

0

You’ve created a namespace player and haven’t even put a class in it, you’ll never be able to create a namespace variable. Wasn’t it supposed to be player2 instead of player? Because you must have spelled it wrong. and you will never be able to put this script into a gameobject because it does not inherit from Monobehaviour. You modify from public class player2 for public class player2 : MonoBehaviour. The code is ready:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace teste {

namespace Player {

public class player2 : MonoBehaviour {


player2 pl = new pl2 () ;


void OnTriggerEnter2D(Collider2D other){

    if(other.gameObject.tag == "Player"){
        other.gameObject.GetComponent<Player>().alive = false;
        Time.timeScale = 0; 
    }
}


void Start () {
    Time.timeScale = 1;

    pauseObjects = GameObject.FindGameObjectsWithTag("ShowOnPause");            //gets all objects with tag ShowOnPause
    finishObjects = GameObject.FindGameObjectsWithTag("ShowOnFinish");          //gets all objects with tag ShowOnFinish

    hidePaused();
    hideFinished();

    if(Application.loadedLevelName == "MainLevel")
        playerController = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>();
}


void Update () {

    if(Input.GetKeyDown(KeyCode.P)){
        if(Time.timeScale == 1 && player.alive == true){
            Time.timeScale = 0;
            showPaused();
        } else if (Time.timeScale == 0 && player.alive == true){
            Time.timeScale = 1;
            hidePaused();
        }
    }
}

public void Reload(){
    Application.LoadLevel(Application.loadedLevel);
}


public void pauseControl(){
    if(Time.timeScale == 1){
        Time.timeScale = 0;
        showPaused();
    } else if (Time.timeScale == 0){
        Time.timeScale = 1;
        hidePaused();
    }
}

public void showPaused(){
    foreach(GameObject g in pauseObjects){
        g.SetActive(true);
    }
}

//hides objects with ShowOnPause tag
public void hidePaused(){
    foreach(GameObject g in pauseObjects){
        g.SetActive(false);
    }
}

//shows objects with ShowOnFinish tag
public void showFinished(){
    foreach(GameObject g in finishObjects){
        g.SetActive(true);
    }
}

//hides objects with ShowOnFinish tag
public void hideFinished(){
    foreach(GameObject g in finishObjects){
        g.SetActive(false);
    }
}

//loads inputted level
public void LoadLevel(string level){
    Application.LoadLevel(level);
}       



GameObject [] pauseObjects;
GameObject [] finishObjects;
player2 Player;

}


}
  • I really appreciate the help thanks!

  • when I can be, I will be traveling I will be, but at first I was doing some tests and I forgot to put the class inside, I thank you for having devoted yourself to help.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.