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

(197评价)
价格: 4431.00元

Unity会计算重叠的顶点

[展开全文]
阿悟 · 25天前 · 0

比较小的用委托(金币 分数 等级 经验值)

比加大的用事件(服务器拉一个任务列表数据)

[展开全文]
Oneart · 10-10 · 0

委托的方式

开始先找到 按钮的组件

不要持有双向引用

父节点可以引用子节点 子节点要调用父节点的方法时 可以用事件或委托

[展开全文]
Oneart · 10-09 · 0

向量的叉积与行列式

参考书籍:

1. 《平面向量和空间向量》-吕学礼-中学生文库-1990

2. 《数理化自学丛书-平面三角函数》,余弦定理和向量点积

3. 《漫画线性代数-欧姆社学习漫画》

[展开全文]
Prefab · 09-29 · 1

坐标系转换,也就是计算不同坐标系下某个点的坐标

假设物体A、B 的世界坐标分别为 (2,3,4)、(2,2,3)

计算以 A 为坐标原点时 B 的坐标,即 AB=B-A=(2,2,3)-(2,3,4)=(0,-1,-1)。

在物体A上挂载脚本并执行:

// 物体 A 的世界坐标为 (2,3,4)
// 物体 B 的世界坐标为 (2,3,3)
Vector B = new Vector3(2,3,3);
// 打印以 A 为坐标原点时的坐标系中 B 点的位置
Debug.Log(transform.InverseTransformPoint(B)); // 打印 [0.00,0.00,-1.00],也就是坐标 (0,0,-1)

假设物体 A 的世界坐标为 (2,3,4)

若以物体 A 为坐标原点时,有一个坐标为 (2,3,3) 的物体 B,计算物体 B 的世界坐标,即 B+A=(2,2,3)+(2,3,4)=(4,6,7)。

在物体A上挂载脚本并执行:

// 物体 A 的世界坐标为 (2,3,4)
// 当以物体 A 为坐标原点时,物体 B 的坐标为 (2,3,3)
Vector B = new Vector3(2,3,3);

// 打印以物体 B 的世界坐标
Debug.Log(transform.InverseTransformPoint(B)); // 打印 [4.00,6.00,7.00],也就是坐标 (4,6,7)。

 

[展开全文]
Prefab · 09-27 · 1

得,果然是无限套娃,我还在好奇它的费用是怎么传递的,结果还真是;

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

若有两个坐标:A(1,2,3), B(2,3,4)

将 B 放置到 A 物体下使 B 成为 A 的子物体。

那么此时的 B 坐标为向量 AB=B-A=(2-1, 3-2, 4-3)=(1,1,1)

[展开全文]
Prefab · 09-19 · 1

这个例子举得真的是一点都不方便, 不如直接拿数据保存举例, 套壳使用另一种方式保存数据

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

果然是套壳, 我愿称之为皮包公司模式

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

为什么不使用事件呢,现在还要单独写个类,观察者模式本身就是谁需要谁注册,被观察者进行触发的流程; 本身用事件的方式去添加方法,逻辑上也是一样的, 真没必要搞得这么绕,其流程是一样的,都需要对stageSystem进行修改操作;

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

他写的太绕了,看的难受,重新写了下

//示例
public class _09ObserverMode : MonoBehaviour
{
    private void Start()
    {
        //
        S1 s1 = new S1();

        Observer ob1 = new Observer("ob1");
        Observer ob2 = new Observer("ob2");

        // 订阅事件  
        s1.Add(ob1);
        s1.Add(ob2);

        // 状态变化,通知所有观察者 
        s1.State = "温度 37";

        // 取消订阅示例  
        s1.Remove(ob1);
        s1.Remove(ob2);
    }
}

//观察者
public class Observer
{
    // 名称
    private string name;

    // 构造函数
    public Observer(string name)
    {
        this.name = name;
    }

    // 更新
    public void Update(string str)
    {
        Debug.Log(name + " 收到了通知,更新了 " + str);
    }
}

//定义被观察者
public class Subject
{
    // 定义事件  
    private Action<string> onEvent;

    // 订阅事件  
    public void Add(Observer ob)
    {
        this.onEvent += ob.Update;
    }

    // 取消订阅事件  
    public void Remove(Observer ob)
    {
        this.onEvent -= ob.Update;
    }

    // 触发事件,通知所有观察者  
    public void Trigger(string str)
    {
        this.onEvent?.Invoke(str);
    }
}

//实现被观察者
public class S1 : Subject
{
    // 状态
    private string mState;

    // 属性
    public string State
    {
        get
        {
            return this.mState;
        }
        set
        {
            // 状态变化,通知所有观察者  
            this.mState = value;              
            this.Trigger(value);
        }
    }
}

 

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

其实真没必要搞那么麻烦,直接在角色系统那边增加两个死亡列表就行,然后让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