Unity 默认Inspector支持的一些属性
[HideInInspector]:使用了该属性的变量不显示在inspector 但是被序列化。即不会显示,也不会被外部类调用。
[SerializeField]:将不会被序列化的非公共变量可以序列化,这么在下次读取时,就是上次赋值的值。
[ExecuteInEditMode()]:这个函数可以使代码在编辑模式下运行,不需要运行游戏;
[ExecuteInEditMode]: 编辑环境中该功能(类)生效,简单讲就是。不运行游戏。就可你让你的功能起作用,比如:NGUI中的Slider
[MenuItem(“”)]:导航条中加入自定义菜单。
[CustomEditor(typeof(EButton))]:绑定使用该类。必须依赖EButton类。
[RequireComponent (typeof (ClassName))]:添加该类时。自动会加入ClassName类。
[ContextMenu (“XXX”)]:加入Inspector面板右键菜单。点击执行该功能。
[AddComponentMenu(“XXX/XX/XXX”)]:菜单中出现定义的该类。
小学数学口算题目答题卡生成器 https://calc.mytime.ink/
最近无聊,因为儿子上小学了,所以顺手写了个小学数学口算答题卡生成器,目录是按照最新的人教版教材整理的,欢迎大家使用。
小学数学口算答题卡地址:https://calc.mytime.ink/
小学数学口算题目答题卡下载,100题一页。可以直接下载小学数学口算答题卡,也可以页面上直接打印小学数学口算答题卡,还可以直接一键生成新的小学数学口算答题卡,极大的方便和帮助家长老师们。
查乐卡恩(Cauliun Kakwon)
查乐卡恩(Cauliun Kakwon)是意大利奢侈品公司旗下的全资子品牌。该品牌于2016年进驻中国大陆市场,主要以中高档女包为主打产品,产品一经问世,备受女性消费者的青睐。
该品牌的创始人为查尔克雷斯先生(Charles Kress),他曾在时尚界担任多个国际品牌的设计师和高管职位,积累了丰富的行业经验和资源。2012年,年近六旬的查尔克雷斯先生再出发,创立了Cauliun Kakwon品牌,并于2018末年引入中国,并同时起用中文品牌名——查乐卡恩(Cauliun Kakwon)。
查乐卡恩(Cauliun Kakwon)的品牌定位为中高档轻奢女包,主要以满足现代女性对于箱包多样化需求为核心理念,注重将时尚元素和实用性相结合,为消费者提供高品质、实用性和舒适度俱佳的产品。此外,品牌还注重材料选用和制造工艺的精益求精,确保产品的质量和耐用性。
品牌的受众群体主要是面向年轻、时尚的女性,但也吸引了广泛的消费者群体。品牌的产品设计简约时尚,外观精致雅致,符合现代女性的审美标准和生活需求。
查乐卡恩(Cauliun Kakwon)在社交媒体上也备受关注,多次被国内外媒体报道和推荐。例如,品牌曾获得亚洲时尚设计大奖“最佳女包品牌”殊荣,并被《多家时尚杂志》评选为“2020最受欢迎箱包品牌”,入选《女人我最大》推荐产品等。这些荣誉和媒体报道都彰显了该品牌在市场上的认可度和影响力。
ES6关于数组操作forEach,map,filter,find,some,every,reduce学习理解和使用
首先说明:数组操作forEach(),map(),filter(),find(),some(),every(),reduce()所有方法,只要是return回来的,均不改变原数组。
forEach()
参数item, index
遍历数组全部元素使用,相当于用for循环吧
var arr = [1,2,3,4,5,] ;
arr.forEach(function(item,index){
console.log(item);
});
/*
1
2
3
4
5
*/
map ()
一项一项更新数组内容,有return的话,返回一个新数组
var arr = [1,2,3,4,5] ;
arr.map((item,index)=>{ return item*2})
// [2, 4, 6, 8, 10]
filter()和find()的区别
filter,find 一般都用于筛选数组,filter返回一个新数组,find则返回第一个符合return后判断内容的单个item
var arr = [1,2,3,4,5] ;
arr.filter(item=>item>2)
// (3) [3, 4, 5]
arr.find(item=>item>2)
// 3
includes()
判断数组是否包含一项内容
var arr = [1,2,3,4,5] ;
arr.includes(4)
// true
arr.includes(6)
// false
some()和every()的区别
some(), every()都是用来判断用的,只会返回true和false
其中some()只有一项满足就会返回true, every()只有一项不满足就会返回false
var arr = [1,2,3,4,5] ;
arr.some(item=>item>4)
// true
arr.some(item=>item>6)
// false
arr.every(item=>item>4)
// false
arr.every(item=>item>0)
// true
reduce()
reduce()一般用于计算,合并,叠加等等
//求和计算
var arr1 = [1,2,3,4,5] ;
var new1 = arr1.reduce(function(sum,next,index){
return sum+next ;
/*
*第一次:pre-->1 next-->2 index-->1
*遍历计算return得结果为pre+next=1+2=3
*第二次:pre-->3 next-->3 index-->2
*遍历计算return得结果为pre+next=3+3=6
*第三次:pre-->6 next-->4 index-->3
*遍历计算return得结果为pre+next=6+4=10
*第四次:pre-->10 next-->5 index-->4
*遍历计算return得结果为pre+next=10+5=15
*/
})
//扁平化数组
var arr2 = [[1,2,3],[4,5],[6,7]] ;
var new2 = arr2.reduce(function(pre,next,index){
return pre.concat(next); //前数组拼接后数组 .concat()
})
//对象数组叠加计算
var arr3 = [{price:10,count:1},{price:15,count:2},{price:10,count:3}];
var new3 = arr3.reduce(function(pre,next,index){
return pre+next.price*next.count;
//当需要对第一项进行操作时,后面pre使用上一项操作结果,不再需要操作
//所以当需要操作第一项的时候,利用reduce(callbreak(){},往数组第一项前添加一项,如:0)
},0) //在原数组第一项添加为0,不改变原数组,则可不操作第一项
console.log(new1);
console.log(new2);
console.log(new3);
// 15
// [1, 2, 3, 4, 5, 6, 7]
// 70
chrome浏览器配置跨域问题
问题出现:
因为访问某个后端接口碰到了跨域问题,然后vue这边又因为一些客观原因无法配置跨域,接口端配置跨域又出现了错误,这个时候就陷入了僵局。
所以,我想到了通过浏览器来配置跨域。
以下讲的都是windows下的chrome浏览器跨域配置:
1、C盘根目录下,建一个 MyChromeDevUserData 文件夹
2、复制浏览器快捷方式,改名为DEV,在DEV上右键,进入属性
3、在属性的目标输入框 尾部加上 --disable-web-security --user-data-dir=C:\MyChromeDevUserData
4、应用,并双击DEV的浏览器快捷方式,打开chrome
5、跳出 您使用的是不受支持的命令行标记:--disable XXXXXXX,说明配置成功
以后你用DEV的快捷方式打开浏览器,将永远不需要处理跨域问题
Unity3d 实现移动端的触摸屏操作-场景的缩放移动
通过Input.touchCount来判断触控点位,通过Input.GetTouch(0).phase来判断移动的类型。
其中phase(状态)有以下这几种:
Began:手指刚刚触摸屏幕
Moved:手指在屏幕上移动
Stationary:手指触摸屏幕,但自最后一阵没有移动
Ended:手指离开屏幕
Canceled:系统取消触控跟踪,原因如把设备放在脸上或同时超过5个触摸点
代码中主要用到的是TouchPhase.Began和TouchPhase.Moved。
完整代码如下,放置到主摄像机上即可:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MobileTouch : MonoBehaviour
{
//是否缩放
private bool IsZoom = false;
//当前双指触控间距
private float DoubleTouchCurrDis;
//过去双指触控间距
private float DoubleTouchLastDis;
//记录手指触碰的位置
Vector2 m_screenPos = new Vector2();
void Start()
{
}
void Update()
{
if ((Input.touchCount > 1) && (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved))
{
// 多点触控
Touch touch1 = Input.GetTouch(0);
Touch touch2 = Input.GetTouch(1);
DoubleTouchCurrDis = Vector2.Distance(touch1.position, touch2.position);
if (!IsZoom)
{
DoubleTouchLastDis = DoubleTouchCurrDis;
IsZoom = true;
}
float distance = DoubleTouchCurrDis - DoubleTouchLastDis;
Camera.main.fieldOfView += (distance > 0 ? -1 : 1) * 1;//更改了摄像头的高度
DoubleTouchLastDis = DoubleTouchCurrDis;
}
else if (Input.touchCount == 1)
{
// 单点移动
if (Input.touches[0].phase == TouchPhase.Began)
{
//记录手指刚触碰的位置
m_screenPos = Input.touches[0].position;
}
if (Input.touches[0].phase == TouchPhase.Moved) //手指在屏幕上移动,移动摄像机
{
transform.Translate(new Vector3(Input.touches[0].deltaPosition.x * Time.deltaTime * -1, Input.touches[0].deltaPosition.y * Time.deltaTime * -1, 0));
}
}
}
}
前端通过meta设置各种模式等
<!-- 设置缩放 -->
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimal-ui" />
<!-- 可隐藏地址栏,仅针对IOS的Safari(注:IOS7.0版本以后,safari上已看不到效果) -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<!-- 仅针对IOS的Safari顶端状态条的样式(可选default/black/black-translucent ) -->
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<!-- IOS中禁用将数字识别为电话号码/忽略Android平台中对邮箱地址的识别 -->
<meta name="format-detection"content="telephone=no, email=no" />
<!-- 启用360浏览器的极速模式(webkit) -->
<meta name="renderer" content="webkit">
<!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 -->
<meta name="HandheldFriendly" content="true">
<!-- 微软的老式浏览器 -->
<meta name="MobileOptimized" content="320">
<!-- uc强制竖屏 -->
<meta name="screen-orientation" content="portrait">
<!-- QQ强制竖屏 -->
<meta name="x5-orientation" content="portrait">
<!-- UC强制全屏 -->
<meta name="full-screen" content="yes">
<!-- QQ强制全屏 -->
<meta name="x5-fullscreen" content="true">
<!-- UC应用模式 -->
<meta name="browsermode" content="application">
<!-- QQ应用模式 -->
<meta name="x5-page-mode" content="app">
<!-- windows phone 点击无高光 -->
<meta name="msapplication-tap-highlight" content="no">
整理解决node-sass依赖错误的问题
最近因为某些原因,MAC系统重装了,然后运行老项目时,出现了各种水土不服的问题,花了不少时间解决,特此记录。
解决方案:查看自己的node版本是否过高,node-sass@4.x.x系列的依赖在过高版本的node下不能顺利运行的。我是通过n控制node版本,降低node@v10.24.1得以解决。
因为习惯使用CNPM淘宝源来进行依赖安装,即cnpm i,发现老项目老是报错:
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.14.1 postinstall: `node scripts/build.js`
网上搜索后,很多人说是通过淘宝源解决,但我尝试后问题依旧,不过我已经锁定是node-sass的版本问题。
故尝试了cnpm i,翻墙 npm i,或者设置
npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass
以上都没有效果。
也自己尝试删除package.json中的
"node-sass": "^4.8.3",
"sass-loader": "^7.0.1",
"style-loader": "^0.21.0",
然后重新cnpm i node-sass sass-loader style-loader -D,依赖倒是都可以安装上了,但运行npm run dev时,会报错:
Module build failed: TypeError: this.getOptions is not a function
或者
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string。
然后解决方案搜索后,说是node-sass版本太高了,因为这时自动加载的node-sass已经到了6.0.1还是多少。
后来想到,可能是node的版本问题,所以查了下NODE版本,
node-v16.10.0
确实太高了,已经接近最新版本,估计node-sass@4.8.3依赖和node版本之间的问题了。
随即,安装n来控制node多版本,安装node 10系列的版本
root@zhujindeMacBook-Pro ~ # n list
node/16.10.0
root@zhujindeMacBook-Pro ~ # n 10
installing : node-v10.24.1
mkdir : /usr/local/n/versions/node/10.24.1
fetch : https://nodejs.org/dist/v10.24.1/node-v10.24.1-darwin-x64.tar.xz
installed : v10.24.1 (with npm 6.14.12)
root@zhujindeMacBook-Pro ~ # n
installed : v10.24.1 (with npm 6.14.12)
root@zhujindeMacBook-Pro ~ # node -v
v10.24.1
之后回到项目,删除node_modules,重新运行cnpm i,问题解决。
css超出文字部分显示…省略号写法-经常用到经常忘记
单行文字超出部分截掉,显示...省略号
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
多行文字超出部分截掉,显示...省略号
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
word-break: break-all;
git退回或者git放弃当前修改时的各种基本操作
-
未使用git add 缓存代码
使用git checkout -- filename,注意中间有--git checkout -- filename
放弃所有文件修改 git checkout .
git checkout .
此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除
此命令不会删除新建的文件,因为新建的文件还没加入git管理系统中,所以对git来说是未知,只需手动删除即可 -
已使用git add 缓存代码,未使用git commit
使用 git reset HEAD filenamegit reset HEAD filename
放弃所有文件修改 git reset HEAD
git reset HEAD
此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了第一步1. 未使用git add 缓存代码,继续使用用git checkout -- filename,就可以放弃本地修改
-
已经用 git commit 提交了代码
使用 git reset --hard HEAD^ 来回退到上一次commit的状态git reset --hard HEAD^
或者回退到任意版本git reset --hard commit id ,使用git log命令查看git提交历史和commit id
git reset --hard commit id