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

(61评价)
价格: 2140.00元

做到第24节课的时候遇到了一个问题,就是两个不同脚本中的 Awake 和OnEnable 谁先调用的问题,之前一直报实例化的错,中建DEBUG了,试出来GameManage脚本中的Awake竟然在Player脚本的OnEnable后调用了,导致一直报空.

最后找出原因: 场景中的物体先添加脚本的最后执行,最后添加的最先执行,简直巨坑.

上网找到一个博主做的测试

https://blog.csdn.net/iFasWind/article/details/81094938

之后删除了GameManage物体从创建添加后,所有脚本才正常执行....

[展开全文]
复杂 · 2020-02-04 · 7

遮挡剔除这节感觉siki老师说错了,老师演示的不是遮挡剔除的真正功效,而是视锥体剔除。

视锥体剔除:只渲染视锥体内物体,视锥体外不渲染。任何一个普通的camera都带有视锥体剔除的功能,而且与物体是否static无关。

遮挡剔除:近处大物体完全遮挡住远处的小物体,则对远处小物体的渲染时无用的,所以遮挡剔除远处小物体,这里要求物体static属性最少为Ocludder Static。

[展开全文]
Julian0520 · 2018-10-18 · 2

如果采用寻找相同类型来存储可堆叠物品,而不是采用ID,那么会导致获取得HP时却增加了MP存量而不是获取HP。

同时如果采用StoreItem方法来直接存储可堆叠物品会导致一个对象拥有多个子对象,一个格子对象可能带着四五个子对象,而且这个现象是无穷叠加,捡到多少次消耗品,就会给那个格子添加多少个子对象。

利用类型来储存消耗品是不合适的,应该采用根据ID来寻找,这样精确的储存可以确保玩家获取到的不同的消耗品都可以正确的进入背包。

首先更改findtype方法为findId。

    public SlotUI FindSameIdSlot(Item item)
    {
        int id = item.ID;
        foreach(SlotUI slot in slotlist)
        {
            if(slot.transform.childCount != 0)
            {
                if(slot.GetItemId() == id)
                {
                    if(slot.IsFull() != true)
                    {
                        return slot;
                    }
                }
            }
        }
        return null;
    }

其次更改Slot内的方法。

    public int GetItemId()
    {
        return transform.GetChild(0).GetComponent<ItemUI>().item.ID;
    }

以及添加一个新的方法,来给获取得的相同消耗品增加存储量,而不是再次给储物槽提供一个新的子对象。

    public void StockMore()
    {
        transform.GetChild(0).GetComponent<ItemUI>().number++;
    }

最终玩家取得到的不同消耗品,会正确的堆叠。

 SlotUI slot = FindSameIdSlot(item);
            if(slot != null)
            {
                slot.StockMore();
                return true;
            }
            else
            {
                slot = FindEmptySlot();
                if(slot == null)
                {
                    return false;
                }
                slot.StoreItem(item);
                return true;
            }

[展开全文]
PigKing · 2019-03-02 · 2

感觉这个笔记写的很好,

[展开全文]
学Unity吧 · 2018-05-11 · 1

 

//创建物体的3种方式
    public GameObject prefab;
	
	void Start () {        
        GameObject go = new GameObject("cube");
        GameObject.Instantiate(prefab);
        GameObject.CreatePrimitive(PrimitiveType.Capsule);
	}
//测试方法的性能用的
public int count = 10000000;
    void Start()
    {
        float time1 = Time.realtimeSinceStartup;
        for (int i = 0; i < count; i++)
        {
            Method1();
        }
        float time2 = Time.realtimeSinceStartup;
        Debug.Log(time2-time1);

        float time3 = Time.realtimeSinceStartup;
        for (int i = 0; i < count; i++)
        {
            Method2();
        }
        float time4 = Time.realtimeSinceStartup;
        Debug.Log(time4-time3);               
    }

 

 

[展开全文]
长颈鹿 · 2018-01-12 · 1

win键+R->mstsc 接入远程主机。

[展开全文]
青烟 · 2019-04-18 · 1

任务24:跟课程笔记里遇到一样的问题,按照老师代码测试的时候,发现总是提示报空,遇到之后之间删除GameManager  重新创建一个 并且重新挂载脚本 可以解决问题

[展开全文]
Menvi · 2020-05-23 · 1
  • 当代码中的全局变量值与Inspector中的不同时,以后者为准
[展开全文]
gentlemanlance · 2018-05-12 · 1

对象池

1丶对象池可以减少cpu的使用(减少了使用时生成内存)

2丶对象池要分子池子和总池子

3丶对象池中的物体使用前都需要初始化

4丶对象池中的物体使用完之后要放回去,然后进行数据还原

[展开全文]
菲瑞娅 · 2018-07-15 · 1

这个地方的委托Toast.CallStatic<AndroidJavaObject>("makeText", context, info, Toast.GetStatic<int>("LENGTH_SHORT")).Call("show");

老师填成currentActivity可以通过很奇怪,应该是currentActivity.Call<AndroidJavaObject>("getApplicationContext")才对

[展开全文]
人本如寄 · 2018-07-18 · 1

这个条有个简单的做法

[展开全文]
wqsl · 2019-12-13 · 1

逆矩阵计算及性质

--------------------------

特性

M 变化之后 可以用 M^(-1) 变化回去;

(M^(-1))^(-1) = M;

I^(-1) = I;

(M^T)^(-1) = ( M^(-1) )^T;

(AB)^(-1) = B^(-1) A^(-1);

(M_1 M_2 ... M_n)^(-1) = (M_n)^(-1) (M_(n-1))^(-1) ... (M_1)^(-1);

[展开全文]
百里奚 · 2019-04-14 · 0

正交矩阵

--------------------------

定义:MM^(T) = I 

如果 M 是正交矩阵,那么 MM^(T) = I 

结合之前的 M(M^(-1)) = I

那么 M^(T) = M^(-1)

===========

验证一个矩阵是否为正交矩阵,推导

1) 展开 M M^(T) = I

2) 计算 I 的值

3) 替换M 为三个向量 r_1, r_2, 和 r_3

4) 根具 1)、2) 和 3) 可得,再找出重复和特殊的

5) 得出结论

      a. 只有当 r_1, r_2 和 r_3 为单位向量时,点积才为1

      b. r_1 ⊥ r_2 ⊥ r_3

      c. 矩阵每行为单位向量

      d. 矩阵所有行互相垂直

 

[展开全文]
百里奚 · 2019-04-12 · 0

 MenuItemme(itemName"GameObeject/@Editorname",isValidatefunction:False,0)

使用该方法可以在右键创建游戏物体的时候能够有这个menuitem

[展开全文]
宋asas · 2020-03-25 · 0

在shader中进来少使用if else

嵌套尽量不要去使用

[展开全文]
jhchn · 2020-12-15 · 0

如果父类没有空的构造方法

而子类只需要父类自己没有任何东西

则必须在

[展开全文]
神心舞 · 2018-10-25 · 0

正交基与标准正交基

--------------------------

一组正交基:基矢量直接互相垂直

标准正交基:给个基矢量长度为1

正交矩阵是一组标准正交基

如果使用一组正交基构建矩阵,不一定是正交矩阵

===========

施密特正交化

施密特正交化(Schmidt orthogonalization)是求欧氏空间正交基的一种方法。从欧氏空间任意线性无关的向量组α1,α2,……,αm出发,求得正交向量组β1,β2,……,βm,使由α1,α2,……,αm与向量组β1,β2,……,βm等价,再将正交向量组中每个向量经过单位化,就得到一个标准正交向量组,这种方法称为施密特正交化。

Reference:

百度百科, 2018, 施密特正交化, Link: https://baike.baidu.com/item/%E6%96%BD%E5%AF%86%E7%89%B9%E6%AD%A3%E4%BA%A4%E5%8C%96/756386?fr=aladdin [Accessed Date: 2018/04/12]

 

[展开全文]
百里奚 · 2019-04-12 · 0

齐次空间

--------------------------

对于一个2D的点 ( x, y ),在齐次空间中表示为 (x, y, w),那么2D点的真实表示发生为 2D(x/w, y/w )

在2D中 如果w = 0, 那么表示无限远的一个点

对于一个3D的点 ( x, y, z ),在齐次空间中表示为 (x, y, z, w),那么3D点的真实表示发生为 3D(x/w, y/w, z/w)

在3D中 如果w = 0, 那么表示无限远的一个点

 

======

目的:为了之后做平移点变换

[展开全文]
百里奚 · 2019-04-12 · 0

此处判断node.leftChild和node.rightChild的部分

[展开全文]
Edward_ · 2021-08-02 · 0