元宇宙主要包含两个属性,交互属性和社会属性。
交互属性,即Meta verse中的Meta,人机交互作为计算机应用技术的重要组成部分,一直是各类硬件、软件设计时需要考虑的重要的属性
人机交互
交互属性的实现更多的需要硬件设备的支持,而虚拟现实技术是目前被认为最适合元宇宙的硬件交互方式,但是受限于硬件计算能力,现在的虚拟现实技术还无法实现规模较大的虚拟世界
NFT链游系统的开发是基于区块链技术的一种新型游戏开发方式
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
[System.Serializable]
public class LevelOrder
{
[Header("每组关卡名称")]
public string[]LevelNames;
}
public class ChangLevelsHasMain:MonoBehaviour
{
[Header("所有关卡列表")]
public LevelOrder[]levelOrder;
private static int index;
private int totalLevels=0;
private int levelOrderLength;
void Start()
{
for(int i=0;i<levelOrder.Length;i++)
{
totalLevels+=levelOrder<i>.LevelNames.Length;
}
if(totalLevels!=SceneManager.sceneCountInBuildSettings)
{
}
levelOrderLength=levelOrder.Length;
}
//Update is called once per frame
void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
{
bool isOk=LoadNextLevels();
if(isOk)
{
InvokeRepeating("UnloadLastLevel",2.0f,5);
}
}
}
bool LoadNextLevels()
{
bool bResult=true;
//index=index%levelOrderLength;
if(index<0||index>=levelOrderLength)
{
bResult=false;
return bResult;
}
int LoadTimes=levelOrder[index].LevelNames.Length;
for(int i=0;i<LoadTimes;i++)
{
SceneManager.LoadSceneAsync(levelOrder[index].LevelNames<i>,LoadSceneMode.Additive);
}
return bResult;
}
void UnloadLastLevel()
{
if(index==0)
{
index++;
CancelInvoke("UnloadLastLevel");
return;
}
//上一組的關卡
int TmpLast=(index-1)>=0?(index-1):levelOrderLength-1;
int LoadTimes=levelOrder[index].LevelNames.Length;
for(int i=0;i<LoadTimes;i++)
{
Scene Tmp=SceneManager.GetSceneByName(levelOrder[index].LevelNames<i>);
if(!Tmp.isLoaded)
{
return;
}
}
//下一關卡全部加載完畢後,卸載之前關卡
for(int i=0;i<levelOrder[TmpLast].LevelNames.Length;i++)
{
SceneManager.UnloadScene(levelOrder[TmpLast].LevelNames<i>);
}
index++;
CancelInvoke("UnloadLastLevel");
}
}