Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 3000.00元

其实真没必要搞那么麻烦,直接在角色系统那边增加两个死亡列表就行,然后让IEnemy和ISoldier死亡后通过GameFacade调用方法添加到死亡列表,最后和视频一样,在CharacterSystem的Update中处理死亡列表

[展开全文]
凡尘cc · 09-13 · 0

其实在这一块可以顺便教一下SO; 注意模型名字错了

[展开全文]
凡尘cc · 09-12 · 0

这个升级兵营 武器 训练士兵,里面的逻辑也拆的太散了吧,这种方式大可不必吧,而且兵营UI属于表现层, 没必要把判断逻辑放在这里面

[展开全文]
凡尘cc · 09-05 · 0
IEnumerator LoadResourceCorotine(string resName
    UnityWebRequest request=UnityWebRequest.GetAssetBundle
    yield return request.SendWebRequest();
    AssetBundle ab=request.downloadHandler as DownloadHandler).assetBundle;//将下载的内容作为ab包
    GameObject gameobject=ab.LoadAsset<GameObject>(resName)
    prefabDict.Add(resName,gameObject)

}

 

[展开全文]
czt5yue11 · 09-03 · 0

private void JoyStick(|int padId,vector2 pos){

    if(padId!=PadID||IScHOOSE)return;

}

[展开全文]
czt5yue11 · 09-02 · 0

public static void CreateUser(string userName,string pwd){

 

}

[展开全文]
czt5yue11 · 09-01 · 0

登录成功,把用户的online改为在线状态

[展开全文]
czt5yue11 · 08-29 · 0
this.btn_Login.on(Laya.Event.CLICK,this,this.OnLoginBtnClick);

OnLoginBtnClick(){

}

 

[展开全文]
czt5yue11 · 08-29 · 0

创建一个Server.js

 

var server=require("socket.io")(9000)

server.on("connection",function(socket){
    console.log("客户端连接"+socket)//socket参数表示客户端连接对象。用socket监听是否断开
    socket.on("disconnection",function(){

   })//检测客户端断开

    socket.on("Msg",function(str){
       console.log(str)
       socket.emit("Server_Msg",123,"Hi I am server");//服务器端给客户端发消息
     });//接收客户端发来的消息
})

 

在Laya中创建一个ClientManager.js

导入socket.io.d.ts

 

export default class ClientManager extends Laya.Script{
   constructor(){
      super();
   }

   OnAwake(){
      var socket=io.connect("ws://localhost:9000");//传递服务器的地址
      socket.on("connect",function(){
         console.log("连接成功");
      });//监听客户端是否连接成功服务器

      socket.on("connect_error",function(){
         console.log("连接失败");
      });//监听客户端是否连接成功服务器

      Laya.stage.on(Laya.Event.MOUSE_DOWN,this,function(){
         socket.emit("Msg","给客户端发送消息");//第一个参数表示协议,服务端必需也是监听同样的协议,才能接收到消息
      });//鼠标按下时向服务器发送消息
   }
}

 

[展开全文]
czt5yue11 · 08-28 · 0

创建一个Server.js

 

var server=require("socket.io")(9000)

server.on("connection",function(socket){
    console.log("客户端连接"+socket)
    socket.on("disconnection",function(){

   })//检测客户端断开
})

 

在Laya中创建一个ClientManager.js

导入socket.io.d.ts

 

export default class ClientManager extends Laya.Script{
   constructor(){
      super();
   }

   OnAwake(){
      var socket=io.connect("ws://localhost:9000");//传递服务器的地址
      socket.on("connect",function(){
         console.log("连接成功");
      });//监听客户端是否连接成功服务器

      socket.on("connect_error",function(){
         console.log("连接失败");
      });//监听客户端是否连接成功服务器
   }
}
[展开全文]
czt5yue11 · 08-28 · 0

老师,请问一下人物行走最后停下来是面对行走的方向应该怎么实现?现在只要一停下来就会自动

[展开全文]
zzztl · 08-22 · 0

关于查找父物体下子物体可以改成如下

//从父物体下找到对应名称子物体
public static Transform FindChild(GameObject father, string name)
{
    Transform[] childList = father.GetComponentsInChildren<Transform>();
    Transform child = null;
    bool isFinded = false;
    foreach (var temp in childList)
    {
        if (temp.name == name)
        {
            if (isFinded == true)
            {
                //查找是否有重名的 //缺点是要把整个列表都遍历一遍
                Debug.Log(father.name + " 下存在重名的物体 " + name);
            }
            else
            {
                child = temp;
                isFinded = true;
            }
        }
    }

    return child;
}

public static T FindChild<T>(string fatherName, string name)
{
    GameObject father = GameObject.Find(fatherName);
    return FindChild(father, name).GetComponent<T>();
}

 

[展开全文]
凡尘cc · 08-16 · 0

您老就不能使用固定分辨率吗,在设计模式搞这个有什么意义

[展开全文]
凡尘cc · 08-16 · 0

第一个是表达了在平面zuobiaoxi

[展开全文]
David13 · 08-14 · 0
public enum EWeaponType
{
    WeaponGun,
    WeaponRifle,
    WeaponRocket,
}

这里把枚举重写下,和预制体名字一样

string assetName = weaponType.ToString();

然后枚举变量转文本

[展开全文]
凡尘cc · 08-14 · 0

使用到ECS设计框架  运用到Entitas插件进行管理。

Entitas是一个运行效率高的轻量级C# Entity-Component-System(ECS)框架,专门为unity订制。提供内部缓存和快速的组件访问。它经过精心设计,可以在垃圾收集环境中发挥最佳作用。

面向对象思想强调对象,通过对象自身属性等完成具体实现。ECS则强调过程,通过并无实际意义的实体来收集作为数据的容器来完成具体实现。
 

关于命名规范

 

关于技术栈

1、对象池

2、通过命名规范,实现挂载脚本自动化,预制体上不挂脚本

3.简易UI

4.AI寻路

5.FSM,有限状态机

6、用Animator重构动画结构

7,配置文件。数据本地持久化,

8、功能模块化。使用数据驱动。最大程度上的复用代码,提升拓展性,在项目中才能更好的理解设计模式。

四、组件设计

1.资源加载,通过命名规范,实现资源加载的自动化。

2.游戏场景分布加载控制

3、动画控制组件

4、人物行为组件

5、声音控制组件。

6、特效控制组件

7、关卡管理器

8.怪物生成器

9.关卡管理器

10.怪物AI

 

[展开全文]
小莫同学 · 08-09 · 0

有需要的同学也可以这样写; 我不太喜欢让子持有父, 所以让子返回信息给父

//控制
public class Context
{
    //由于state是私有的,外部不能访问,所以需要提供以下方法
    private IState state;

    //封装一次方法
    public void Handle(int num)
    {
        IState tempState = this.state.Handle(num);
        if (tempState != null)
            this.ChangeState(tempState);
    }

    //切换状态
    public void ChangeState(IState state)
    {
        this.state = state;
    }
}

//接口
public interface IState
{
    public IState Handle(int num);
}

//实现接口
public class StateA : IState
{
    public IState Handle(int num)
    {
        Debug.Log(this + "  " + num);

        if (num > 10)
            return new StateB();
        else
            return null;
    }
}

//实现接口
public class StateB : IState
{
    public IState Handle(int num)
    {
        Debug.Log(this + "  " + num);

        if (num <= 10)
            return new StateA();
        else
            return null;
    }
}

 

[展开全文]
凡尘cc · 08-05 · 0

你哪怕弄成固定分斌率也不会有这种问题, 主要是设了16:9的原因

[展开全文]
凡尘cc · 07-30 · 0

这个采用dotween会更可控吧, 时间也可以在叫脚本中一一控制

[展开全文]
凡尘cc · 07-30 · 0

需要取消鸟的射线检测, 否则会影响按钮点击

为什么这里不创建两个空物体作为坐标点呢, 这样就不用一次调试看数据了

[展开全文]
凡尘cc · 07-30 · 0