开始
DoTween插件,往前播放:DOPlayForward();
往后播放:DOPlayBackwards();
DOMoveX(5,3); //x坐标移动到5,用时3秒
go.transform.DOBlendableScaleBy(new Vector3(0.3f, 0.3f, 0.3f), 0.4f); //在0.4秒增加0.3
相应的 go.transform.DOBlendableScaleBy(new Vector3(-0.3f, -0.3f, -0.3f), 0.4f); //在0.4秒减小0.3
协同程序:
IEnumerator One(GameObject go) //开启一个协程,这里参数为GameObject,当go为false代表终止协程,并且当go再次开启为true时,协程也不开启
{
Yield return new WaitForSeconds(0.4f); //中断程序:这里暂停0.4秒
go.SetActive(false);
}
NetworkManager 控制联网游戏
左右滑动三维物体旋转角度:
public void OnMouseDrag()
{
this.transform.Rotate(Vector3.up, Time.deltaTime * rotateSpeed * Input.GetAxis("Mouse X"), Space.Self); //Space.Self表示局部坐标
}
使用DoTween的transform.DoScale(new vector3(0,0,0),0.4f)实现在0.4秒的时间内,面板由原本大小缩小到坐标(0,0,0)点,
使用transform.DoScale(1f,0.4f)实现在0.4秒的时间内,面板由坐标(0,0,0)放大到原本大小
UGUI更改图片
- Image myImage;
myImage.sprite=Resources.Load(“//图片位置”+//图片名称,typeof(sprite))as Sprite;
- 通过协程从WWW上获取到图片
定义一个事件的代理
public delegate void OnPlayerInfoChangedEvent(InfoType type);
定义一个事件
public event OnPlayerInfoChangedEvent OnPlayerInfoChanged;
在别的类注册
PlayerInfo._instance.OnPlayerInfoChanged += OnPlayerInfoChanged;
在别的类销毁
PlayerInfo._instance.OnPlayerInfoChanged -= OnPlayerInfoChanged;
在定义事件的类里,写在需要改变的地方
void OnPlayerInfoChanged(InfoType type)
Enum类型的强转
Equipment.EquipmentType equipmentType=(Equipment.EquipmentType)System.Enum.Parse(typeof (Equipment.EquipmentType), equipmentTypeValye.ToString());
移动的时候改变主角的朝向
Vector3 vel = rigidbody.velocity;
rigidbody.velocity = new Vector3(-h*velocity, vel.y, -v*velocity);
if (Mathf.Abs(h) > 0.05 || Mathf.Abs(v) > 0.05) //表示移动,改变主角的朝向
{
transform.rotation = Quaternion.LookRotation(new Vector3(-h, 0, -v));
}
另一个方法:transform.LookAt(new vector(v,0,h)+transform.rotation
rigidbody.velocity.magnitude返回向量的长度,也就是点P(x,y,z)到原点(0,0,0)的距离。 最常用的是用来返回物体的移动速度
SetDestination(Target.position);表示寻路,目标为Target.position
Substring(0,4)表示从字符从第一位开始,截取4位
在动画里面添加事件,可以使特效和动画播放的同步
怪物的击退效果:
transform.DOMove(transform.position + FindPlayer._instance.Player.transform.forward * 1f, 1f);
//将目标的世界坐标转化为屏幕坐标
Vector2 pos = RectTransformUtility.WorldToScreenPoint(Camera.main, targetPos);
按钮添加事件:
Button button;
Button.onClick.AddListener(OnClick);
Void OnClcik(){
//按钮点击的操作
}
AssetBundle打包:
//参数:1.打包目录,2.打包选项,3.打包平台
BuildPipeline.BuildAssetBundles("AssetBundles", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
AssetBundle加载:
AssetBundle ab= AssetBundle.LoadFromFile("AssetBundles/wall.ab");//加载相对路径
GameObject go = ab.LoadAsset<GameObject>("Wall"); //从AssetBundle取得自己的Prefab;
Instantiate(go); //实例化生成
求角度:Vector3.Angle(player1.forward,player2.forward); //得到两者之间的角度
求方向(点积):Vector3.Dot(player1.forward,player2.forward); //得到一个值,>0 两者同向, <0 两者反向, =0 两者垂直
求距离:方法1:(plyaer1.position-player2.position).magnitude //比较精确
方法2:(player1.position-player2.position).sqrMagnitude //比较省
方法3:Vector3.Distance(player1.position,player2.position);
在摄像机的世界里,黑色是透明
RenderTexture制作动态头像
RectTransform.sizeDelta表示UGUI组件的尺寸