Unity 状态系统
2023-12-13 07:33:26
原理
食用方法Demo
导入包👈, 通过字符串调用扩展方法。
每个物体都创建了一个状态,并且加入了两个随机的分组中,通过id更新状态值。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace ZYF
{
public class StateSysDemo : MonoBehaviour
{
[SerializeField]
private string stateId;
[SerializeField]
private ZYF_StateSystem.State<bool> state;
[SerializeField]
private List<ZYF_StateSystem.State<bool>> stateGroup;
[SerializeField]
private List<ZYF_StateSystem.State<bool>> stateGroup2;
private void Start()
{
float randomInterval = Random.Range(1, 10);
this.stateId= $"{gameObject.name}";
this.state =stateId.GetOrCreateState<bool>();
//初始化状态
UpdateState();
//加入状态组
int randomGroup = Random.Range(1, 3);
this.stateGroup= stateId.AddState2Group<bool>(groupId:$"测试组_{randomGroup}");
randomGroup = Random.Range(4, 6);
this.stateGroup2 = stateId.AddState2Group<bool>(groupId:$"测试组_{randomGroup}");
//切换状态
InvokeRepeating(methodName:nameof(SwitchActive),time:randomInterval,repeatRate: randomInterval);
}
private void UpdateState()
{
UpdateState(gameObject.activeInHierarchy);
}
private void UpdateState(bool state)
{
//更新状态值
stateId.UpdateState<bool>(state);
}
void SwitchActive() {
var newState = !gameObject.activeInHierarchy;
gameObject.SetActive(newState);
UpdateState(newState);
}
}
}
文章来源:https://blog.csdn.net/qq_26318597/article/details/134834569
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!