目录
NavMeshAgent(实例化问题):
报错代码:
原因:
没有实例化:
应改成:
想有限的循环生成某个物体:
结果:
是的无限生成了。
原因:循环放在了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,省事。