|
||
---|---|---|
.. | ||
8K Skybox Pack Free | ||
AE_Battle Royale_Props | ||
AdvancedCullingSystem | ||
Artists | ||
Azerilo/Car Model No.1201 Asset | ||
BITFALL | ||
BITKit | ||
Bakery | ||
BakeryLightmaps | ||
Blink/Tools/SkinnedMeshTransfer | ||
Car_Low/Tocus | ||
CatwalkKit | ||
Chernobyl | ||
Cyberpunk Material Pack | ||
Final Form Studio/Cars | ||
Free HDR Skyboxes Pack | ||
GSpawn - Level Designer | ||
Infima Games/Low Poly Animated - Modern Guns | ||
Kevin Iglesias/Dance Animations | ||
Le Tai's Asset/TranslucentImage | ||
MagicaCloth2 | ||
Metro-City Level Design | ||
Plugins | ||
Polaris Exported | ||
Prop/Lighting Generator | ||
Resources | ||
Samples/Timeline/1.6.4/Customization Samples | ||
SciFi Warehouse Kit | ||
Settings | ||
Signals | ||
SpawnCampGames/WalkieTalkie | ||
Standard Assets | ||
TheTalesFactory/Photoscanned MoutainsRocks PBR | ||
Tokyo_Street | ||
Versatile Studio Assets/Demo City By Versatile Studio | ||
WSM Game Studio | ||
Zombie Slaughter | ||
Zombie_27 | ||
_Demo | ||
_TerrainData | ||
vrbn_studios/2023_A | ||
AssetBundleCollectorSetting.asset | ||
Assets.index | ||
FolderIcons.asset | ||
InitTestScene638457010046051900.unity | ||
Material Palette.asset | ||
ReadMe.md |
ReadMe.md
####项目架构与说明
Artists 项目专用文件地址 BITKit 工具包,通常不需要动 Mods 主要存放DLC等内容 Plugins 插件存放地址 Standard Assets 资产包目录 StreamingAssets GDNet会用到的生成目录 Libs 项目专用类库 Fltoto Fltoto专用文件夹
Libs内容写法
#####首先,你需要在脚本的程序集中引用
SerializeReference Extensions #####接着定义接口
public interface IAction
{
void Excute();
}
#####新建类,并实现接口
[System.Serializable]
public class BITAction:IAction
{
public void Excute()
{
Debug.Log("BIT执行了该任务")
}
}
[System.Serializable]
public class FltotoAction:IAction
{
public void Excute()
{
Debug.Log("Fltoto执行了该任务")
}
}
#####最后控制器会这么调用接口
[SerializeReference, SubclassSelector]
public IAction action;
void Start()
{
//执行该任务
action.Excute();
}
#####这就是我们如何利用接口进行解耦
//物品容器接口
public interface IContainer
{
bool AddItem();
bool RemoveItem();
bool TryGetItem(Guid key,out var item);
}
//武器控制器
public class GunController
{
[SerializeReference, SubclassSelector]
public IContainer container;
void TryFire()
{
if(container.TryGetItem(ammo,out ammo))
{
if(ammo.count>1)
{
Fire();
}else
{
Jam();
}
}
else
{
PlayVoice("没子弹了呀");
SwitchEquip("Hand");
}
}
}