Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class targetting : MonoBehaviour {
public List<Transform> targets;
public Transform selectedtarget;
private Transform mytransform;
public int index;
// Use this for initialization
void Start () {
targets = new List<Transform>();
mytransform=transform;
addallenemyes();
}
// Update is called once per frame
void Update () {
if (Input.GetKeyUp(KeyCode.Tab)){
targetenemy();
}
}
public void addallenemyes(){
GameObject[] go = GameObject.FindGameObjectsWithTag("enemy");
foreach(GameObject enemy in go) addtarget(enemy.transform);
}
public void addtarget(Transform enemy) {
targets.Add(enemy);
}
private void targetenemy(){
if(selectedtarget==null){sorttargetbydistance();
selectedtarget=targets[0];}
else{ index = targets.IndexOf(selectedtarget);
if(index<targets.Count-1){index ++;}else{index=0;}
deselecttarget();
selectedtarget=targets[index];}
selecttarget();
}
private void sorttargetbydistance(){
targets.Sort(delegate(Transform t1,Transform t2){return Vector3.Distance(t1.position,mytransform.position).CompareTo(Vector3.Distance(t2.position,mytransform.position));}) ;
}private void selecttarget(){
enemyhealth eh = (enemyhealth)selectedtarget.gameObject.GetComponent("enemyhealth");
if (eh._curHelth>0){
selectedtarget.renderer.material.color=Color.red;
playeratack pa = (playeratack)GetComponent("playeratack");
pa.target=selectedtarget.gameObject;
eh.showhealthbar();}
else {
targets.RemoveAt(index);
targets.TrimExcess();
Destroy(gameObject);
}
}
private void deselecttarget(){
selectedtarget.renderer.material.color=Color.white;
enemyhealth eh = (enemyhealth)selectedtarget.gameObject.GetComponent("enemyhealth");
eh.hidehealthbar();
}
}
using System.Collections;
using System.Collections.Generic;
public class targetting : MonoBehaviour {
public List<Transform> targets;
public Transform selectedtarget;
private Transform mytransform;
public int index;
// Use this for initialization
void Start () {
targets = new List<Transform>();
mytransform=transform;
addallenemyes();
}
// Update is called once per frame
void Update () {
if (Input.GetKeyUp(KeyCode.Tab)){
targetenemy();
}
}
public void addallenemyes(){
GameObject[] go = GameObject.FindGameObjectsWithTag("enemy");
foreach(GameObject enemy in go) addtarget(enemy.transform);
}
public void addtarget(Transform enemy) {
targets.Add(enemy);
}
private void targetenemy(){
if(selectedtarget==null){sorttargetbydistance();
selectedtarget=targets[0];}
else{ index = targets.IndexOf(selectedtarget);
if(index<targets.Count-1){index ++;}else{index=0;}
deselecttarget();
selectedtarget=targets[index];}
selecttarget();
}
private void sorttargetbydistance(){
targets.Sort(delegate(Transform t1,Transform t2){return Vector3.Distance(t1.position,mytransform.position).CompareTo(Vector3.Distance(t2.position,mytransform.position));}) ;
}private void selecttarget(){
enemyhealth eh = (enemyhealth)selectedtarget.gameObject.GetComponent("enemyhealth");
if (eh._curHelth>0){
selectedtarget.renderer.material.color=Color.red;
playeratack pa = (playeratack)GetComponent("playeratack");
pa.target=selectedtarget.gameObject;
eh.showhealthbar();}
else {
targets.RemoveAt(index);
targets.TrimExcess();
Destroy(gameObject);
}
}
private void deselecttarget(){
selectedtarget.renderer.material.color=Color.white;
enemyhealth eh = (enemyhealth)selectedtarget.gameObject.GetComponent("enemyhealth");
eh.hidehealthbar();
}
}
со списками в си шарп работаю первый раз и не могу удалить из списка последовательности без ошибки((может направите по правильному пути?
пробовал так но увы...
Синтаксис:
Используется csharp
else {
targets.RemoveAt(index);
targets.TrimExcess();
Destroy(gameObject);
targets.RemoveAt(index);
targets.TrimExcess();
Destroy(gameObject);