加载prefab
GameObject obj = (GameObject)Resources.Load("XXX");
知道自己是第几个孩子
using UnityEngine;
public class ChildIndexChecker : MonoBehaviour
{
int siblingIndex
void Start()
{
// 获取当前对象在父对象中的索引(从0开始)
siblingIndex = transform.GetSiblingIndex();
// 打印当前对象是第几个孩子(将索引+1以从1开始计数)
Debug.Log(gameObject.name + " 是它父对象的第 " + (siblingIndex + 1) + " 个孩子。");
}
void Update()
{
// 假设我们想要在某个条件下将这个对象移到第一个位置
if (Input.GetKeyDown(KeyCode.Space))
{
transform.SetSiblingIndex(0);
}
}
}
类型转换
//int转float
private float a = (float)10;
//float转int
int b = (int )(2.5f)
//string转int
int.Parse()//失败会报错
if(int.TryParse("11",out int a))
{
Debug.Log(a);//成功打印11
}
else
{
Debug.Log(a);//失败打印0
}
委托
//发送消息
using UnityEngine;
public class SendInfo : MonoBehaviour
{
public delegate void DelegateInform(int b);
public static event DelegateInform EventInform;
void AA()//执行AA发送消息
{
EventInform(2);
}
}
//接受消息
using UnityEngine;
public class ReceiveInfo : MonoBehaviour
{
void OnEnable()
{
SendInfo .EventInform +=BB;
}
void OnDisable()
{
SendInfo .EventInform -=BB;
}
void BB(int b)
{
//受到消息执行此操作
}
}
携程,延迟触发
{
StartCoroutine(TimeToDo());
}
IEnumerator TimeToDo()
{
yield return new WaitForSeconds(2f);
Debug.Log("2秒后执行这里");
}
当前播放的动画
animator.GetCurrentAnimatorStateInfo(0).IsName("XXX")
动画在过渡状态
animator.IsInTransition(0);
创建带层级的可编辑的list
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName ="New WeaponsGroup",menuName ="Inventory/New WeaponsGroup")]
public class WeaponsGroup : ScriptableObject
{
public List<WeaponData> WeaponsList=new List<WeaponData>();
}
[System.Serializable]
public class WeaponData
{
public int ID;
public string name;
public GameObject weapon;
public GameObject mag;
public int DPS_min;
public int DPS_max;
public int bullet_current;
public int bullet_max;
public Item bagItem;
}
面板隐藏public
[HideInInspector]
Unity按键输入
if (Input.GetKeyDown(KeyCode.F))
{
//如果按下F键,则执行...
}
添加对Tag的判断
GameObject aa;
if(aa.CompareTag("Player"))
{
//如果aa是Player执行...
}
Vector3.Distance 计算两个物体之间的距离
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Distance : MonoBehaviour
{
public Transform objTrans1; //定义两个 Transform 组件变量
public Transform objTrans2;
void Start()
{
//计算两个物体距离,使用 Vector3.Distance()
float dis = Vector3.Distance(objTrans1.position, objTrans2.position);
//输出到控制台
Debug.Log("Distance = " + dis);
}
}