unity3d 个人问题记录

0.u3d启动时Error显卡TDR(Timeout Detection and Recovery) 超时侦测与恢复。

A:我的电脑右键->管理硬件->更新显卡驱动,然后重新安装u3d,就好了

 

1.运行时鼠标出不了game窗口,怎么解除限制?

A:ESC 

2.同时创建多个怪物在同一个点,会被撞飞 ,怎么解决呢?

A:关闭碰撞器,collider.enabled = false;
冻结移动,的作用是防止怪物掉入地面下
rigidbody.constraints = RigidbodyConstraints.FreezePosition;

方法2:菜单栏Edit->ProjectSitting->Physics->Physics Collision Matrix ,中碰撞关闭怪物之间发生的碰撞

3.怪物会撞飞角色?

A:怪物不要刚体组件Destroy(my.rigidbody);,或者给怪物刚体换一个物理材质 ,

4.已知一个物体z个轴朝上,也就是和世界坐标系都Y轴朝向一样,但是用代码怎样判断物体是哪个轴朝上呢?

 

angle = Vector3.Angle(Vector3.up, transform.up);
if(angle==0)y轴向上

方法2
var upDirect = cubeTransform.up.normalized;
if(upDirect.y ==1.0f)//y轴正直向上。
{

}
else if (upDirect.x ==-1f)//=-1,x轴垂直的朝上,=1,x轴垂直的朝下
{

}
else if (upDirect.z == -1f)//z轴朝上
{

}

​

#if UNITY_STANDLONE_WIN
#endif
识别不了windows 平台

用下面这样才能
if(Application.platform == RuntimePlatform.WindowsPlayer)

NGUI 界面Game窗口不显示了,未知原因

最后发现 相机Depth相同导致
NGUI 2d camera的属性Depth=2
3D 场景Camera的属性depth=2,改成1

摄像头渲染拖影

3D Camara面板上
Clear Falgs设置为 Skybox 就不会渲染拖影了
Culling Mask 设置为Everything层都渲染
NGUI 2d Camara面板上
Clear Falgs设置为 Depth only
Culling Mask   UI层勾选,其他不勾选


Animator 动画事件不触发,

解决办法切换不同动画片段设置事件来尝试触发


NGUI UITextList 第一次赋值 显示不正确.

通过协成来多次赋值切换
 yield return new WaitForEndOfFrame();


DontDestroyOnLoad(Resources.Load生成的物体,切换场景还是被销毁了.
 

#if UNITY_STANDLONE_WIN
#endif
识别不了windows 平台
用下面这样才能
if(Application.platform == RuntimePlatform.WindowsPlayer)

NGUI 界面Game窗口不显示了,未知原因
最后发现 相机Depth相同导致
NGUI 2d camera的属性Depth=2
3D 场景Camera的属性depth=2,改成1

摄像头渲染拖影
3D Camara面板上
Clear Falgs设置为 Skybox 就不会渲染拖影了
Culling Mask 设置为Everything层都渲染
NGUI 2d Camara面板上
Clear Falgs设置为 Depth only
Culling Mask   UI层勾选,其他不勾选


Animator 动画事件不触发,
解决办法切换不同动画片段设置事件来尝试触发


NGUI UITextList 第一次赋值 显示不正确.
通过协成来多次赋值切换
 yield return new WaitForEndOfFrame();
 
DontDestroyOnLoad(Resources.Load生成的物体,切换场景还是被销毁了.
 
已知一个物体z个轴朝上,也就是和世界坐标系都Y轴朝向一样,但是用代码怎样判断物体是哪个轴朝上呢?
var upDirect = cubeTransform.up.normalized;
if(upDirect.y ==1.0f)//y轴正直向上。
{

}
else if (upDirect.x ==-1f)//=-1,x轴垂直的朝上,=1,x轴垂直的朝下
{

}
else if (upDirect.z == -1f)//z轴朝上
{

}
 
变量的名字可以和类的名字相同 ,因为一个是类的名字  一个是类里面变量的名字  没影响
    public class CacheData
    {
        public GameObject GameObject;
        public Transform Transform;
    }

    

U3d报: ArgumentException: Object at index 0 is null ,定位不到出错地方.

点击运行按钮,u3d就卡主了
把卡主u3d运行的脚步先移除,通过调试步进发现逻辑执行顺序搞错造成一个死循环

点击运行按钮停止游戏后, unity3d无响应
反正就是不停查代码,看哪里代码有问题.一个一个代码的启用看是哪个cs有问题测试

NGUI UIbutton按钮点击时画面有交互动画,但是就是不触发事件?
最好发现 UIbutton 未启用

transform.position = newPos; 赋值后下一帧就又改变了其他位置,怀疑有另一处代码在一直修改它的位置,但是找不到
最后发现NavMeshAgent.enabled = true移动失败,解决方案GetComponent<NavMeshAgent>().enabled = false;

VS 点击调试按钮 无反应
最后发现是被我用360禁止了VS的网络连接

u3d编译慢 卡
Edit->Project Setting ->Edit->Asset Serialization Mode->Force Binary

同一时刻触发2次伤害,但是显示伤害数字时也一起运动,同步遮挡只看到一次伤害了,怎么办呢
如果当上次伤害数字 1.还没有消失时,或者是2生成时间没超过指定间隔
就把当前显示伤害数字初始位置上移,第二条放在第一条位置上面吧
    private Vector3 startPos;
    [Tooltip("单位:Milliseconds,当没有超过间隔当前生成的位置就上移")]
	public long CreatInterval = 500;
    public Vector3 IntervalOffset =new Vector3(0,2f,0f);
    long lastCreatTime;
    Vector3 lastPos;

    public long CurrTime
    {
	    get
	    {
		    long TotalMilliseconds = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000l) / 10000l;
		    return TotalMilliseconds;
	    }
    }
    void Start()
    {
	    startPos = GetComponent<ESize>().Init().topPoint;
	    lastCreatTime = CurrTime;
	    lastPos = startPos;
    }
    public void BeAttack(int _dmg)
    {
        bool isOverTime = CurrTime > (CreatInterval + lastCreatTime);
        lastCreatTime = CurrTime;
        if (isOverTime)
        {
            lastPos = startPos;
        }
        else
        {
            lastPos += IntervalOffset;
        }
        PopHudManager.Instance.AddEntry(PopType.beNormalAttacked, "-" + _dmg, lastPos, false);
    }

unity3d 角色歪倒了,怎样使角色Y轴朝上?
    

unity3d 怎样防止地面纹理重复?    
    
导入 UniRx 报错,
Assets\Plugins\UniRx\Scripts\InternalUtil\CancellableTaskCompletionSource.cs(17,57): error CS0433: The type 'TaskCompletionSource<TResult>' exists in both 'System.Threading, Version=1.0.2856.102, Culture=neutral, PublicKeyToken=31bf3856ad364e35' and 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
Assets\Plugins\UniRx\Examples\Sample02_ObservableTriggers.cs(2,13): error CS0234: The type or namespace name 'Triggers' does not exist in the namespace 'UniRx' (are you missing an assembly reference?)
因为UniRx不支持.net 4.0,File ->  Build Settings -> Player Setting -> Scripting Runtime Version = .Net 3.5 Equivalent(Deprecated) 
  

C# 泛型如何判断T是值类型还是引用类型?
当然是引用类型,判断方法:typeof(List<String>).IsValueType 返回是false

u3d 中Lay层,相同的层int但是名字不一样,所以比较层是否相同,还是把层转成名字在比较

Linq 在.net2.0平台时,值比较的函数都不起作用
Distinct OrderBy 

public class CharacterControllerMove :  MonoBehaviour , 接口
{
    u3d协成 不运行了
}

scriptableobject Resources.Load 变不可用,.ass 文件没有属性条目,
提示:No script asset for EntryDate. Check that the definition is in a file of the same name and that it compiles properly.
anser:稍微修改继承scriptableobject的脚步,重编译后可用.

A和B是相同类型的引用类型集合,如果A和B的id字段相同,就把 A.Name =B.Name; 用Linq怎么写?
var result = A.Join(B, a => a.ID, b => b.ID, (a, b) => new //相当于.where( (a,b)=>a.ID==b.ID ).Select
{
    //最后两个查询将其结果投影到一个新的匿名类型中,该类型仅包含学生的名字和姓氏。
    mA = a,
    mB = b
});
foreach (var item in result)
{
    item.mA.Name = item.mB.Name;//A.Name =B.Name
}
Debug.Log("\naaaaaaaaaaa\n");
A.ForEach(_ => Debug.Log(_));

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值