UNITY个人问题合集

目录

 想有限的循环生成某个物体:

 触发器无效:

队列一开始报空:

 拖尾特效不显示:

点击一个物体全部的都被激活:

发射射线点击屏幕有偏斜:

对象池报错

Shader贴图颜色不对

LayoutGroup下子物体没有排列问题

unity发布小游戏时不显示中文但显示英文

UI适配问题(发布到手机或者其他)

一个简单的fps脚本


报错代码:

原因:

没有实例化:

应改成: 

 想有限的循环生成某个物体:

 结果:

是的无限生成了。

原因:循环放在了update() 里面,此循环对于生成物体限制无效,每一帧都在执行生成物体

解决办法:update可能不适合用for循环

 触发器无效:

触发物体(接收触发方):

 刚体(触发方):

原因:没有挂上脚本!!!!! 是的,我有一双不怎么厉害的眼睛。

队列一开始报空:

原因:游戏刚开始没有任何物体进入队列,报空

解决办法:判断队列有数量再执行即可。

 拖尾特效不显示:

解决办法:更改层级

点击一个物体全部的都被激活:

点击一次却出现了多次输出

说明每个脚本都在监听鼠标,发现每个塔台都有一个脚本,干脆将控制生成的脚本给管理者,解决

发射射线点击屏幕有偏斜:

原因:计算目标点的时候只用到屏幕对应的坐标点,没有算上物体的位置算向量

解决方法:算上物体向量即可。

对象池报错

  确保您没有直接删除已解除授权的实例。

因为是单例模式所以不允许重新生成,删掉就好了

Shader贴图颜色不对

 原贴图:

加了shader后:

编写颜色的shader代码:少了个4

修改之后:

LayoutGroup下子物体没有排列问题

不要使用空物体,要使用带renderer的游戏对象。这个就是自己没注意。

unity发布小游戏时不显示中文但显示英文

一般是用的unity自带的Arial,在webgl平台unity不访问系统字库,如果用了Arial在Webgl上只显示英文,解决方法也很简单,导入小游戏插件时就带着字体,用它给的就行。

UI适配问题(发布到手机或者其他)

有时候做好游戏之后发布游玩,发现UI并没有在编辑器中的匹配,那是因为画布(CANVAS)没有设置好:

1:首先render mode要选择screen Space;

 2:UI Scale Mode 设置成 Scale With Screen;

 3:screen match mode 设置成expand;

 这样设置大部分都能自适应UI了。

一个简单的fps脚本

首先是游戏对象结构

然后是脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour
{
    //水平方向参数
    float Horizontal;
    //垂直方向参数
    float Vertical;
    //水移动速度
    float movespeed =1f;
    //鼠标坐标位置
    float MouseX;
    float MouseY;
    //鼠标敏感度
    float mouseSensity = 3f;
    //获取主摄像机
    GameObject MainCamera;
    //垂直镜头的参数
    float vroter;
    // Start is called before the first frame update
    void Start()
    {
        MainCamera = Camera.main.gameObject;
        vroter = transform.eulerAngles.x;
    }

    // Update is called once per frame
    void Update()
    {
        Movement();
        Rotation();
    }
    //位移函数,用于角色位移
    void Movement() {
        Horizontal = Input.GetAxis("Horizontal");
        Vertical = Input.GetAxis("Vertical");
        transform.Translate(Horizontal*Time.deltaTime*movespeed,0,Vertical*Time.deltaTime*movespeed);

    }
    //旋转函数,用于镜头旋转
    void Rotation() {
        //获取鼠标坐标
        MouseX = Input.GetAxis("Mouse X");
        MouseY = Input.GetAxis("Mouse Y");
        vroter -= MouseY * mouseSensity;
        MainCamera.transform.localEulerAngles = new Vector3(vroter,0,0);
        //玩家水平旋转
        transform.Rotate(MouseX*Vector3.up);


    }
}

 直接用就完了,以后也可以直接CV,省事。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值