Prefab não salva Obejto Linkado
3 participantes
Página 1 de 1
Prefab não salva Obejto Linkado
COMO EU FARIA PARA O "GameObject ScoreGameObject" da linha 22, linkar automaticamente quando ele desse spawn.
Porque essa é a script do meu inimigo e ele fica dando spawn automaticamente e nao pode ficar na "Scena" o Objeto linkado so fica se estiver na "Scena" e um Text UI.
Porque essa é a script do meu inimigo e ele fica dando spawn automaticamente e nao pode ficar na "Scena" o Objeto linkado so fica se estiver na "Scena" e um Text UI.
- Código:
using UnityEngine;
using CompleteProject;
using UnityEngine.UI;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
ScoreManager sm;
public GameObject ScoreGameObject;//Coloca o GameObject onde o ScoreManager esta ||||| SETA ISSOOOOOOOOO
public GameObject Inimigo; //Inimigo ||||||||||||||||| ISSO TBM
public float DelayDeath;//Daley para a destroy do inimigo
float Ctime;
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
sm = ScoreGameObject.GetComponent<ScoreManager> ();
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Death ();
}
}
void Death ()
{
//print("Death ok");
currentHealth = 0;// setamos a vida pra 0 pra nao ficar negativa
isDead = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
// executamos o metodo StartSinking que não estava sendo usado
StartSinking();
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
sm.score += scoreValue;
Ctime += 1 * Time.deltaTime;
if(Ctime == DelayDeath){
Destroy (Inimigo);
}
}
}
Re: Prefab não salva Obejto Linkado
Faz ele receber o nome do objeto ou a tag:
https://docs.unity3d.com/ScriptReference/GameObject.FindWithTag.html
https://docs.unity3d.com/ScriptReference/GameObject.Find.html
https://docs.unity3d.com/ScriptReference/GameObject.FindWithTag.html
https://docs.unity3d.com/ScriptReference/GameObject.Find.html
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Prefab não salva Obejto Linkado
Eu comecei a estudar programação a pouco tempo então não sei nada ainda, teria como especificar mais?
Re: Prefab não salva Obejto Linkado
É praticamente oque te passei no caso do seu script seria:
- Código:
Por Tag:
ScoreGameObject = GameObject.FindWithTag("TagDoObjeto");
//Aqui ele vai procura a tag do objeto que você quer linkar
Por Nome:
ScoreGameObject = GameObject.Find("NomeDoObjeto");
//Aqui ele procura o nome do objeto que você quer linkar
Última edição por rafaelllsd em Sex maio 12, 2017 6:40 pm, editado 1 vez(es) (Motivo da edição : complemento)
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Prefab não salva Obejto Linkado
A SCRIPT NAO ESTA LINKANDO O OBJETO NAO ESTA DANDO ERROR NENUM NO CONSOLE MAIS QUANDO ELE DA SPAWN NO INIMIGO DA ERROR!
O SCRIPT FICOU ASSIM!
ACHO QUE O ERROR É NA LINHA "41"
O SCRIPT FICOU ASSIM!
- Código:
using UnityEngine;
using CompleteProject;
using UnityEngine.UI;
using System.Collections;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
ScoreManager sm;
public GameObject ScoreGameObject;//Coloca o GameObject onde o ScoreManager esta ||||| SETA ISSOOOOOOOOO
public GameObject Inimigo; //Inimigo ||||||||||||||||| ISSO TBM
public float DelayDeath;//Daley para a destroy do inimigo
float Ctime;
void Start ()
{
if (ScoreGameObject == null)
ScoreGameObject = GameObject.FindWithTag ("ScoreGameObject");
}
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
sm = ScoreGameObject.GetComponent<ScoreManager> ();
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Death ();
}
}
void Death ()
{
//print("Death ok");
currentHealth = 0;// setamos a vida pra 0 pra nao ficar negativa
isDead = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
// executamos o metodo StartSinking que não estava sendo usado
StartSinking();
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
sm.score += scoreValue;
Ctime += 1 * Time.deltaTime;
if(Ctime == DelayDeath){
Destroy (Inimigo);
}
}
}
ACHO QUE O ERROR É NA LINHA "41"
Re: Prefab não salva Obejto Linkado
Exemplo:
- Código:
public GameObject Objeto;
void Start () {
Objeto = GameObject.Find ("NomeDoObjeto"); //Recebe o objeto pelo nome na aba Hierarchy.
Objeto = GameObject.FindWithTag("TagDoObjeto"); //Recebe o objeto que tem a tag "TagDoObjeto".
}
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Prefab não salva Obejto Linkado
É O SISTEMA DE SCORE!
PARA ENTENDER MELHOR OLHE O LINK ABAIXO:
https://www.schultzgames.com/t4474-score-ao-matar-inimigo#31347
PARA ENTENDER MELHOR OLHE O LINK ABAIXO:
https://www.schultzgames.com/t4474-score-ao-matar-inimigo#31347
Re: Prefab não salva Obejto Linkado
Conseguiu resolver o erro da linha 41? caso não tente fazer um if verificando se o ScoreGameObject for diferente de nulo, ele adiciona a linha 41.
- Código:
if(ScoreGameObject != null) {
sm = ScoreGameObject.GetComponent<ScoreManager> ();
}
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Prefab não salva Obejto Linkado
ENTÃO ELE DEU SPAWN NO INIMIGO E LINKOU NORMAL AI QUANDO EU MATO O INIMIGO ELE NAO AUMENTA O "SOCRE" E DA O SEGUINTE ERROE:
O ERROR É NESSA LINHA:
O ERROR É NESSA LINHA:
- Código:
sm.score += scoreValue;
Re: Prefab não salva Obejto Linkado
Está mostrando que o objeto que tem o script não está sendo encontrado na variavel. para destroir o inimigo você pode usar o:
- Código:
Destroy(Inimigo, DelayDeath);
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Prefab não salva Obejto Linkado
DESCULPE NAO ENTENDI, COMO EU RESOLVO ESSE SCRIPT TODO PARA ELE DESTRUIR E DA OS PONTOS?rafaelllsd escreveu:Está mostrando que o objeto que tem o script não está sendo encontrado na variavel. para destroir o inimigo você pode usar o:
- Código:
Destroy(Inimigo, DelayDeath);
Re: Prefab não salva Obejto Linkado
- Código:
if(sm != null) {
sm.score += scoreValue;
}
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Prefab não salva Obejto Linkado
SIMM, O ERROU SUMIU SÓ QUE O SCORE NAO ESTA AUMENTANDOrafaelllsd escreveu:Vê se o erro some.
- Código:
if(sm != null) {
sm.score += scoreValue;
}
Re: Prefab não salva Obejto Linkado
É por isto, seu objeto que tem o componente ScoreManager está sendo destroido antes de ser atribuido o score.
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Prefab não salva Obejto Linkado
Faz um teste comenta está linha:
- Código:
Destroy (Inimigo);
- Código:
//Destroy (Inimigo);
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Prefab não salva Obejto Linkado
Não funcionou!
e descobri tambem que o inimigo nao estva sendo destruido ele so era destruido no mapa, mais continuava na Scene
e descobri tambem que o inimigo nao estva sendo destruido ele so era destruido no mapa, mais continuava na Scene
Tópicos semelhantes
» Prefab não salva Script Linkado!!
» Transmitir Obejto atravez do click do mouse
» como fazer um obejto fica virado para camera???????
» PlayerPrefs salva SetActive??
» SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
» Transmitir Obejto atravez do click do mouse
» como fazer um obejto fica virado para camera???????
» PlayerPrefs salva SetActive??
» SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos