Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
3
3D Fruit
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanqing
3D Fruit
Commits
1fd3cc6a
Commit
1fd3cc6a
authored
Apr 21, 2021
by
wanqing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
三连逻辑
parent
0730d04f
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
247 additions
and
50 deletions
+247
-50
DemoScenes.unity
3D Fruit/Assets/#A1_Scenes/DemoScenes.unity
+1
-1
BattleUI.cs
3D Fruit/Assets/#A2_Scripts/Battle/UI/BattleUI.cs
+9
-2
FruitView.cs
3D Fruit/Assets/#A2_Scripts/Battle/View/FruitView.cs
+115
-11
GlassView.cs
3D Fruit/Assets/#A2_Scripts/Battle/View/GlassView.cs
+4
-3
GlobalConfig.cs
3D Fruit/Assets/#A2_Scripts/Services/GlobalConfig.cs
+2
-0
BattleUI.prefab
3D Fruit/Assets/#A3_Prefabs/BattleUI.prefab
+91
-11
CylinderLine.prefab
3D Fruit/Assets/#A3_Prefabs/CylinderLine.prefab
+3
-3
Level0.prefab
3D Fruit/Assets/Res/Levels/Level0.prefab
+10
-8
Level1.prefab
3D Fruit/Assets/Res/Levels/Level1.prefab
+11
-10
QualitySettings.asset
3D Fruit/ProjectSettings/QualitySettings.asset
+1
-1
No files found.
3D Fruit/Assets/#A1_Scenes/DemoScenes.unity
View file @
1fd3cc6a
...
@@ -38,7 +38,7 @@ RenderSettings:
...
@@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity
:
1
m_ReflectionIntensity
:
1
m_CustomReflection
:
{
fileID
:
0
}
m_CustomReflection
:
{
fileID
:
0
}
m_Sun
:
{
fileID
:
0
}
m_Sun
:
{
fileID
:
0
}
m_IndirectSpecularColor
:
{
r
:
0.45130
503
,
g
:
0.5001916
,
b
:
0.5690723
,
a
:
1
}
m_IndirectSpecularColor
:
{
r
:
0.45130
473
,
g
:
0.5001914
,
b
:
0.5690714
,
a
:
1
}
m_UseRadianceAmbientProbe
:
0
m_UseRadianceAmbientProbe
:
0
---
!u!157
&4
---
!u!157
&4
LightmapSettings
:
LightmapSettings
:
...
...
3D Fruit/Assets/#A2_Scripts/Battle/UI/BattleUI.cs
View file @
1fd3cc6a
...
@@ -42,6 +42,7 @@ public class BattleUI : MonoBehaviour
...
@@ -42,6 +42,7 @@ public class BattleUI : MonoBehaviour
public
Button
m_boomBtn
;
//炸弹按钮
public
Button
m_boomBtn
;
//炸弹按钮
public
GameObject
m_symbolObj
;
//十字架图标
public
GameObject
m_symbolObj
;
//十字架图标
public
GameObject
m_takeBtnObj
;
//take按钮
public
GameObject
m_takeBtnObj
;
//take按钮
public
Text
m_moveNumText
;
//移动次数
public
Action
onStartBtn
;
public
Action
onStartBtn
;
public
Action
onPosUpBtn
;
public
Action
onPosUpBtn
;
public
Action
onPosDownBtn
;
public
Action
onPosDownBtn
;
...
@@ -289,15 +290,21 @@ public class BattleUI : MonoBehaviour
...
@@ -289,15 +290,21 @@ public class BattleUI : MonoBehaviour
Vector2
varPos
=
m_fruitGroupRT
.
anchoredPosition
;
Vector2
varPos
=
m_fruitGroupRT
.
anchoredPosition
;
if
(
BattleCtrl
.
instance
.
levelManager
.
CurLevelIndex
==
LevelEnum
.
levelOneIndex
)
if
(
BattleCtrl
.
instance
.
levelManager
.
CurLevelIndex
==
LevelEnum
.
levelOneIndex
)
{
{
varPos
.
y
=
153
.0f
;
varPos
.
y
=
-
400
.0f
;
m_fruitSecondLineObj
.
SetActive
(
false
);
m_fruitSecondLineObj
.
SetActive
(
false
);
}
}
else
if
(
BattleCtrl
.
instance
.
levelManager
.
CurLevelIndex
==
LevelEnum
.
levelTwoIndex
)
else
if
(
BattleCtrl
.
instance
.
levelManager
.
CurLevelIndex
==
LevelEnum
.
levelTwoIndex
)
{
{
varPos
.
y
=
212
.0f
;
varPos
.
y
=
-
286
.0f
;
m_fruitSecondLineObj
.
SetActive
(
true
);
m_fruitSecondLineObj
.
SetActive
(
true
);
}
}
m_fruitGroupRT
.
anchoredPosition
=
varPos
;
m_fruitGroupRT
.
anchoredPosition
=
varPos
;
m_moveNumText
.
text
=
string
.
Format
(
"move {0:d}"
,
GlobalConfig
.
FruitMoveTotalNum
);
}
//设置移动次数
public
void
SetMoveNum
(
int
num
)
{
m_moveNumText
.
text
=
string
.
Format
(
"move {0:d}"
,
num
);
}
}
//设置战斗UI状态
//设置战斗UI状态
public
void
SetBattleObjState
(
bool
bool_
)
public
void
SetBattleObjState
(
bool
bool_
)
...
...
3D Fruit/Assets/#A2_Scripts/Battle/View/FruitView.cs
View file @
1fd3cc6a
...
@@ -6,6 +6,7 @@ public class FruitView : MonoBehaviour
...
@@ -6,6 +6,7 @@ public class FruitView : MonoBehaviour
{
{
public
GlassView
m_glassView
;
public
GlassView
m_glassView
;
public
Transform
m_fruitParent
;
public
Transform
m_fruitParent
;
public
HighlightingEffect
m_highLightEffect
;
private
List
<
FruitItemView
>
m_selectLst
=
new
List
<
FruitItemView
>();
//选中的水果
private
List
<
FruitItemView
>
m_selectLst
=
new
List
<
FruitItemView
>();
//选中的水果
private
int
m_lineIndex
=
0
;
//线段计数
private
int
m_lineIndex
=
0
;
//线段计数
private
FruitItemView
m_curSelectItem
;
//当前选中的
private
FruitItemView
m_curSelectItem
;
//当前选中的
...
@@ -15,6 +16,8 @@ public class FruitView : MonoBehaviour
...
@@ -15,6 +16,8 @@ public class FruitView : MonoBehaviour
private
int
m_SelectNum
=
0
;
//选中数量
private
int
m_SelectNum
=
0
;
//选中数量
private
List
<
GameObject
>
m_fruitBombEffect
=
new
List
<
GameObject
>();
//爆汁特效
private
List
<
GameObject
>
m_fruitBombEffect
=
new
List
<
GameObject
>();
//爆汁特效
private
List
<
GameObject
>
m_fruitDropEffect
=
new
List
<
GameObject
>();
//流体特效
private
List
<
GameObject
>
m_fruitDropEffect
=
new
List
<
GameObject
>();
//流体特效
private
Color
m_hightColor
=
new
Color
(
217.0f
/
255.0f
,
233.0f
/
255.0f
,
1.0f
,
1.0f
);
private
int
m_moveNum
=
0
;
//移动次数
void
Start
()
void
Start
()
{
{
GameServices
.
inputService
.
pad
.
onTouchUp
+=
OnTouchUp
;
GameServices
.
inputService
.
pad
.
onTouchUp
+=
OnTouchUp
;
...
@@ -26,10 +29,53 @@ public class FruitView : MonoBehaviour
...
@@ -26,10 +29,53 @@ public class FruitView : MonoBehaviour
{
{
GlobalConfig
.
LoadSecondLevelDefaultFruit
(
m_fruitParent
);
GlobalConfig
.
LoadSecondLevelDefaultFruit
(
m_fruitParent
);
}
}
m_moveNum
=
GlobalConfig
.
FruitMoveTotalNum
;
}
//是否正确三连
bool
IsConnectRight
()
{
int
varCount
=
m_selectLst
.
Count
;
if
(
varCount
<
3
)
{
return
false
;
}
int
varStrawberryNum
=
0
;
int
varLemonNum
=
0
;
int
varOrangeNum
=
0
;
for
(
int
i
=
0
;
i
<
varCount
;
i
++)
{
if
(
m_selectLst
[
i
].
type
==
FruitType
.
Strawberry
)
{
varStrawberryNum
++;
}
else
if
(
m_selectLst
[
i
].
type
==
FruitType
.
Lemon
)
{
varLemonNum
++;
}
else
if
(
m_selectLst
[
i
].
type
==
FruitType
.
Orange
)
{
varOrangeNum
++;
}
}
if
(
varCount
==
varStrawberryNum
||
varCount
==
varLemonNum
||
varCount
==
varOrangeNum
)
{
return
true
;
}
return
false
;
}
}
// 抬起回调
// 抬起回调
void
OnTouchUp
()
void
OnTouchUp
()
{
{
//水果变小重置
m_bIsTouchUp
=
true
;
m_lastSelectItem
=
null
;
//线段回收
for
(
int
i
=
0
;
i
<
m_lineLst
.
Count
;
i
++)
{
PoolManager
.
Instance
.
ReturnObjectToPool
(
m_lineLst
[
i
]);
}
m_lineLst
.
Clear
();
//高亮重置
for
(
int
i
=
0
;
i
<
m_selectLst
.
Count
;
i
++)
for
(
int
i
=
0
;
i
<
m_selectLst
.
Count
;
i
++)
{
{
HighlightableObject
varHO
=
m_selectLst
[
i
].
GetComponent
<
HighlightableObject
>();
HighlightableObject
varHO
=
m_selectLst
[
i
].
GetComponent
<
HighlightableObject
>();
...
@@ -37,6 +83,29 @@ public class FruitView : MonoBehaviour
...
@@ -37,6 +83,29 @@ public class FruitView : MonoBehaviour
{
{
varHO
.
FlashingOff
();
varHO
.
FlashingOff
();
}
}
}
//水果刚体状态重置
SetFruitRigidState
(
false
);
if
(
m_moveNum
<=
0
)
{
return
;
}
if
(
m_selectLst
.
Count
>
0
)
{
m_moveNum
--;
BattleCtrl
.
instance
.
battleUI
.
SetMoveNum
(
m_moveNum
);
if
(
m_moveNum
<=
0
)
{
Invoke
(
"DelayFail"
,
2.5f
);
}
}
if
(!
IsConnectRight
())
{
m_selectLst
.
Clear
();
//重置下状态
return
;
}
for
(
int
i
=
0
;
i
<
m_selectLst
.
Count
;
i
++)
{
m_selectLst
[
i
].
SetFrag
();
m_selectLst
[
i
].
SetFrag
();
//播放爆汁特效
//播放爆汁特效
GameObject
varEffectObj
=
null
;
GameObject
varEffectObj
=
null
;
...
@@ -80,13 +149,14 @@ public class FruitView : MonoBehaviour
...
@@ -80,13 +149,14 @@ public class FruitView : MonoBehaviour
m_SelectNum
=
m_selectLst
.
Count
;
m_SelectNum
=
m_selectLst
.
Count
;
Invoke
(
"DelayClear"
,
0.5f
);
Invoke
(
"DelayClear"
,
0.5f
);
Invoke
(
"DelayClearEffect"
,
1.0f
);
Invoke
(
"DelayClearEffect"
,
1.0f
);
m_bIsTouchUp
=
true
;
}
m_lastSelectItem
=
null
;
//延迟判断失败
for
(
int
i
=
0
;
i
<
m_lineLst
.
Count
;
i
++)
void
DelayFail
()
{
if
(!
BattleCtrl
.
instance
.
isEndBattle
)
{
{
PoolManager
.
Instance
.
ReturnObjectToPool
(
m_lineLst
[
i
]
);
BattleCtrl
.
instance
.
OnBattleFail
(
);
}
}
m_lineLst
.
Clear
();
}
}
//延迟删除特效
//延迟删除特效
void
DelayClearEffect
()
void
DelayClearEffect
()
...
@@ -151,7 +221,7 @@ public class FruitView : MonoBehaviour
...
@@ -151,7 +221,7 @@ public class FruitView : MonoBehaviour
varEffect3
.
transform
.
position
=
m_glassView
.
effectPos
;
varEffect3
.
transform
.
position
=
m_glassView
.
effectPos
;
m_fruitDropEffect
.
Add
(
varEffect3
);
m_fruitDropEffect
.
Add
(
varEffect3
);
}
}
Invoke
(
"DelayClearDropEffect"
,
2
.0f
);
Invoke
(
"DelayClearDropEffect"
,
1
.0f
);
Invoke
(
"DelayCreate"
,
0.2f
);
Invoke
(
"DelayCreate"
,
0.2f
);
}
}
//延迟生成
//延迟生成
...
@@ -237,7 +307,7 @@ public class FruitView : MonoBehaviour
...
@@ -237,7 +307,7 @@ public class FruitView : MonoBehaviour
// Update is called once per frame
// Update is called once per frame
void
Update
()
void
Update
()
{
{
if
(!
BattleCtrl
.
instance
.
isStartBattle
||
BattleCtrl
.
instance
.
isEndBattle
)
if
(!
BattleCtrl
.
instance
.
isStartBattle
||
BattleCtrl
.
instance
.
isEndBattle
||
m_moveNum
==
0
)
{
{
return
;
return
;
}
}
...
@@ -261,13 +331,16 @@ public class FruitView : MonoBehaviour
...
@@ -261,13 +331,16 @@ public class FruitView : MonoBehaviour
if
(!
m_selectLst
.
Contains
(
varHitTrans
))
if
(!
m_selectLst
.
Contains
(
varHitTrans
))
{
{
m_bIsTouchUp
=
false
;
m_bIsTouchUp
=
false
;
SetFruitRigidState
(
true
);
m_highLightEffect
.
enabled
=
false
;
m_highLightEffect
.
enabled
=
true
;
HighlightableObject
varHo
=
hit
.
collider
.
GetComponent
<
HighlightableObject
>();
HighlightableObject
varHo
=
hit
.
collider
.
GetComponent
<
HighlightableObject
>();
if
(
varHo
)
if
(
varHo
)
{
{
varHo
.
FlashingOn
(
Color
.
magenta
,
Color
.
magenta
,
1.0f
);
varHo
.
FlashingOn
(
Color
.
magenta
,
Color
.
magenta
,
1.0f
);
// Color.magenta
}
}
m_curSelectItem
=
varHitTrans
;
m_curSelectItem
=
varHitTrans
;
if
(
m_selectLst
.
Count
>
0
)
if
(
m_selectLst
.
Count
>
0
)
{
{
m_lastSelectItem
=
m_selectLst
[
m_selectLst
.
Count
-
1
];
m_lastSelectItem
=
m_selectLst
[
m_selectLst
.
Count
-
1
];
}
}
...
@@ -310,9 +383,9 @@ public class FruitView : MonoBehaviour
...
@@ -310,9 +383,9 @@ public class FruitView : MonoBehaviour
void
DrawLS
(
Transform
startP
,
Transform
finalP
)
void
DrawLS
(
Transform
startP
,
Transform
finalP
)
{
{
Vector3
varStart
=
startP
.
position
;
Vector3
varStart
=
startP
.
position
;
//
varStart.z = 0;
varStart
.
z
=
0
;
Vector3
varFinal
=
finalP
.
position
;
Vector3
varFinal
=
finalP
.
position
;
//
varFinal.z = 0;
varFinal
.
z
=
0
;
Vector3
rightPosition
=
(
varStart
+
varFinal
)
/
2
;
Vector3
rightPosition
=
(
varStart
+
varFinal
)
/
2
;
Vector3
rightRotation
=
varFinal
-
varStart
;
Vector3
rightRotation
=
varFinal
-
varStart
;
float
HalfLength
=
Vector3
.
Distance
(
varStart
,
varFinal
)
/
2
;
float
HalfLength
=
Vector3
.
Distance
(
varStart
,
varFinal
)
/
2
;
...
@@ -329,6 +402,37 @@ public class FruitView : MonoBehaviour
...
@@ -329,6 +402,37 @@ public class FruitView : MonoBehaviour
//这里可以设置材质,具体自己设置
//这里可以设置材质,具体自己设置
//MyLine.GetComponent<MeshRenderer>().material = GetComponent<MeshRenderer>().material;
//MyLine.GetComponent<MeshRenderer>().material = GetComponent<MeshRenderer>().material;
}
}
//设置水果刚体状态
void
SetFruitRigidState
(
bool
value
)
{
Transform
varStrawberry
=
PoolManager
.
Instance
.
GetObjectRoot
(
CacheManager
.
Instance
.
StrawberryObj
);
if
(
varStrawberry
)
{
Rigidbody
[]
varBody
=
varStrawberry
.
GetComponentsInChildren
<
Rigidbody
>();
for
(
int
i
=
0
;
i
<
varBody
.
Length
;
i
++)
{
varBody
[
i
].
isKinematic
=
value
;
}
}
Transform
varLemonberry
=
PoolManager
.
Instance
.
GetObjectRoot
(
CacheManager
.
Instance
.
LemonObj
);
if
(
varLemonberry
)
{
Rigidbody
[]
varBody
=
varLemonberry
.
GetComponentsInChildren
<
Rigidbody
>();
for
(
int
i
=
0
;
i
<
varBody
.
Length
;
i
++)
{
varBody
[
i
].
isKinematic
=
value
;
}
}
Transform
varOrangeberry
=
PoolManager
.
Instance
.
GetObjectRoot
(
CacheManager
.
Instance
.
OrangeObj
);
if
(
varOrangeberry
)
{
Rigidbody
[]
varBody
=
varOrangeberry
.
GetComponentsInChildren
<
Rigidbody
>();
for
(
int
i
=
0
;
i
<
varBody
.
Length
;
i
++)
{
varBody
[
i
].
isKinematic
=
value
;
}
}
}
//缓存所有水果
//缓存所有水果
public
void
CacheAllFruit
()
public
void
CacheAllFruit
()
{
{
...
...
3D Fruit/Assets/#A2_Scripts/Battle/View/GlassView.cs
View file @
1fd3cc6a
...
@@ -23,6 +23,7 @@ public class GlassView : MonoBehaviour
...
@@ -23,6 +23,7 @@ public class GlassView : MonoBehaviour
private
float
m_orangeMaxNum
=
3.0f
;
private
float
m_orangeMaxNum
=
3.0f
;
private
bool
m_bControl
=
true
;
private
bool
m_bControl
=
true
;
private
float
m_speed
=
2.0f
;
//数量
//数量
public
void
SetFruitNum
(
int
num1
,
int
num2
,
int
num3
)
public
void
SetFruitNum
(
int
num1
,
int
num2
,
int
num3
)
...
@@ -51,7 +52,7 @@ public class GlassView : MonoBehaviour
...
@@ -51,7 +52,7 @@ public class GlassView : MonoBehaviour
}
}
if
(
m_strawberryOffest
<
m_strawberryNum
)
if
(
m_strawberryOffest
<
m_strawberryNum
)
{
{
m_strawberryOffest
+=
Time
.
deltaTime
;
m_strawberryOffest
+=
Time
.
deltaTime
*
m_speed
;
Vector3
varSize
=
m_strawberry
.
localScale
;
Vector3
varSize
=
m_strawberry
.
localScale
;
varSize
.
y
=
m_strawberryOffest
/
10.0f
;
varSize
.
y
=
m_strawberryOffest
/
10.0f
;
...
@@ -71,7 +72,7 @@ public class GlassView : MonoBehaviour
...
@@ -71,7 +72,7 @@ public class GlassView : MonoBehaviour
}
}
if
(
m_lemonOffest
<
m_lemonNum
)
if
(
m_lemonOffest
<
m_lemonNum
)
{
{
m_lemonOffest
+=
Time
.
deltaTime
;
m_lemonOffest
+=
Time
.
deltaTime
*
m_speed
;
Vector3
varSize
=
m_lemon
.
localScale
;
Vector3
varSize
=
m_lemon
.
localScale
;
varSize
.
y
=
m_lemonOffest
/
10.0f
;
varSize
.
y
=
m_lemonOffest
/
10.0f
;
...
@@ -91,7 +92,7 @@ public class GlassView : MonoBehaviour
...
@@ -91,7 +92,7 @@ public class GlassView : MonoBehaviour
}
}
if
(
m_orangeOffest
<
m_orangeNum
&&
m_orange
)
if
(
m_orangeOffest
<
m_orangeNum
&&
m_orange
)
{
{
m_orangeOffest
+=
Time
.
deltaTime
;
m_orangeOffest
+=
Time
.
deltaTime
*
m_speed
;
Vector3
varSize
=
m_orange
.
localScale
;
Vector3
varSize
=
m_orange
.
localScale
;
varSize
.
y
=
m_orangeOffest
/
10.0f
;
varSize
.
y
=
m_orangeOffest
/
10.0f
;
...
...
3D Fruit/Assets/#A2_Scripts/Services/GlobalConfig.cs
View file @
1fd3cc6a
...
@@ -36,6 +36,8 @@ public class GlobalConfig
...
@@ -36,6 +36,8 @@ public class GlobalConfig
public
static
float
CanvaUIScaleX
=
BattleCtrl
.
instance
.
battleUI
.
gameObject
.
transform
.
localScale
.
x
;
//uicanva适配大小
public
static
float
CanvaUIScaleX
=
BattleCtrl
.
instance
.
battleUI
.
gameObject
.
transform
.
localScale
.
x
;
//uicanva适配大小
//水果可以切的次数
public
static
int
FruitMoveTotalNum
=
3
;
//通过当前关卡返回总的数量
//通过当前关卡返回总的数量
public
static
int
TotalNum
()
public
static
int
TotalNum
()
...
...
3D Fruit/Assets/#A3_Prefabs/BattleUI.prefab
View file @
1fd3cc6a
...
@@ -593,11 +593,11 @@ RectTransform:
...
@@ -593,11 +593,11 @@ RectTransform:
m_Father
:
{
fileID
:
6064464676328073067
}
m_Father
:
{
fileID
:
6064464676328073067
}
m_RootOrder
:
15
m_RootOrder
:
15
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_AnchorMin
:
{
x
:
0
.5
,
y
:
0
}
m_AnchorMin
:
{
x
:
0
,
y
:
1
}
m_AnchorMax
:
{
x
:
0
.5
,
y
:
0
}
m_AnchorMax
:
{
x
:
0
,
y
:
1
}
m_AnchoredPosition
:
{
x
:
248
,
y
:
153
}
m_AnchoredPosition
:
{
x
:
0
,
y
:
-400
}
m_SizeDelta
:
{
x
:
360
,
y
:
5
}
m_SizeDelta
:
{
x
:
360
,
y
:
5
}
m_Pivot
:
{
x
:
0
.5
,
y
:
0
}
m_Pivot
:
{
x
:
0
,
y
:
1
}
---
!u!114
&1518767727
---
!u!114
&1518767727
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -616,7 +616,7 @@ MonoBehaviour:
...
@@ -616,7 +616,7 @@ MonoBehaviour:
m_Top
:
0
m_Top
:
0
m_Bottom
:
0
m_Bottom
:
0
m_ChildAlignment
:
0
m_ChildAlignment
:
0
m_Spacing
:
51
m_Spacing
:
100
m_ChildForceExpandWidth
:
0
m_ChildForceExpandWidth
:
0
m_ChildForceExpandHeight
:
0
m_ChildForceExpandHeight
:
0
m_ChildControlWidth
:
0
m_ChildControlWidth
:
0
...
@@ -850,7 +850,7 @@ RectTransform:
...
@@ -850,7 +850,7 @@ RectTransform:
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_AnchorMin
:
{
x
:
0
,
y
:
1
}
m_AnchorMin
:
{
x
:
0
,
y
:
1
}
m_AnchorMax
:
{
x
:
0
,
y
:
1
}
m_AnchorMax
:
{
x
:
0
,
y
:
1
}
m_AnchoredPosition
:
{
x
:
63
,
y
:
-2.5
}
m_AnchoredPosition
:
{
x
:
50
,
y
:
-2.5
}
m_SizeDelta
:
{
x
:
100
,
y
:
5
}
m_SizeDelta
:
{
x
:
100
,
y
:
5
}
m_Pivot
:
{
x
:
0.5
,
y
:
0.5
}
m_Pivot
:
{
x
:
0.5
,
y
:
0.5
}
---
!u!222
&2122888659
---
!u!222
&2122888659
...
@@ -868,7 +868,7 @@ MonoBehaviour:
...
@@ -868,7 +868,7 @@ MonoBehaviour:
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
2122888656
}
m_GameObject
:
{
fileID
:
2122888656
}
m_Enabled
:
1
m_Enabled
:
0
m_EditorHideFlags
:
0
m_EditorHideFlags
:
0
m_Script
:
{
fileID
:
11500000
,
guid
:
fe87c0e1cc204ed48ad3b37840f39efc
,
type
:
3
}
m_Script
:
{
fileID
:
11500000
,
guid
:
fe87c0e1cc204ed48ad3b37840f39efc
,
type
:
3
}
m_Name
:
m_Name
:
...
@@ -1690,7 +1690,7 @@ RectTransform:
...
@@ -1690,7 +1690,7 @@ RectTransform:
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_AnchorMin
:
{
x
:
0
,
y
:
1
}
m_AnchorMin
:
{
x
:
0
,
y
:
1
}
m_AnchorMax
:
{
x
:
0
,
y
:
1
}
m_AnchorMax
:
{
x
:
0
,
y
:
1
}
m_AnchoredPosition
:
{
x
:
63
,
y
:
-191
.5
}
m_AnchoredPosition
:
{
x
:
50
,
y
:
-107
.5
}
m_SizeDelta
:
{
x
:
100
,
y
:
5
}
m_SizeDelta
:
{
x
:
100
,
y
:
5
}
m_Pivot
:
{
x
:
0.5
,
y
:
0.5
}
m_Pivot
:
{
x
:
0.5
,
y
:
0.5
}
---
!u!222
&1028847026378544125
---
!u!222
&1028847026378544125
...
@@ -1708,7 +1708,7 @@ MonoBehaviour:
...
@@ -1708,7 +1708,7 @@ MonoBehaviour:
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
1028847026378544112
}
m_GameObject
:
{
fileID
:
1028847026378544112
}
m_Enabled
:
1
m_Enabled
:
0
m_EditorHideFlags
:
0
m_EditorHideFlags
:
0
m_Script
:
{
fileID
:
11500000
,
guid
:
fe87c0e1cc204ed48ad3b37840f39efc
,
type
:
3
}
m_Script
:
{
fileID
:
11500000
,
guid
:
fe87c0e1cc204ed48ad3b37840f39efc
,
type
:
3
}
m_Name
:
m_Name
:
...
@@ -10473,7 +10473,7 @@ RectTransform:
...
@@ -10473,7 +10473,7 @@ RectTransform:
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_AnchorMin
:
{
x
:
0
,
y
:
1
}
m_AnchorMin
:
{
x
:
0
,
y
:
1
}
m_AnchorMax
:
{
x
:
0
,
y
:
1
}
m_AnchorMax
:
{
x
:
0
,
y
:
1
}
m_AnchoredPosition
:
{
x
:
63
,
y
:
-191
.5
}
m_AnchoredPosition
:
{
x
:
50
,
y
:
-212
.5
}
m_SizeDelta
:
{
x
:
100
,
y
:
5
}
m_SizeDelta
:
{
x
:
100
,
y
:
5
}
m_Pivot
:
{
x
:
0.5
,
y
:
0.5
}
m_Pivot
:
{
x
:
0.5
,
y
:
0.5
}
---
!u!222
&9065902244082100770
---
!u!222
&9065902244082100770
...
@@ -10491,7 +10491,7 @@ MonoBehaviour:
...
@@ -10491,7 +10491,7 @@ MonoBehaviour:
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
5962246056473825828
}
m_GameObject
:
{
fileID
:
5962246056473825828
}
m_Enabled
:
1
m_Enabled
:
0
m_EditorHideFlags
:
0
m_EditorHideFlags
:
0
m_Script
:
{
fileID
:
11500000
,
guid
:
fe87c0e1cc204ed48ad3b37840f39efc
,
type
:
3
}
m_Script
:
{
fileID
:
11500000
,
guid
:
fe87c0e1cc204ed48ad3b37840f39efc
,
type
:
3
}
m_Name
:
m_Name
:
...
@@ -10636,6 +10636,7 @@ RectTransform:
...
@@ -10636,6 +10636,7 @@ RectTransform:
-
{
fileID
:
6109125632920290557
}
-
{
fileID
:
6109125632920290557
}
-
{
fileID
:
5181902483590371204
}
-
{
fileID
:
5181902483590371204
}
-
{
fileID
:
1518767726
}
-
{
fileID
:
1518767726
}
-
{
fileID
:
6111148557972933165
}
m_Father
:
{
fileID
:
6064464677632144690
}
m_Father
:
{
fileID
:
6064464677632144690
}
m_RootOrder
:
3
m_RootOrder
:
3
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
...
@@ -12742,6 +12743,7 @@ MonoBehaviour:
...
@@ -12742,6 +12743,7 @@ MonoBehaviour:
m_boomBtn
:
{
fileID
:
3314642096669198153
}
m_boomBtn
:
{
fileID
:
3314642096669198153
}
m_symbolObj
:
{
fileID
:
8615814293053379064
}
m_symbolObj
:
{
fileID
:
8615814293053379064
}
m_takeBtnObj
:
{
fileID
:
7938503036084442980
}
m_takeBtnObj
:
{
fileID
:
7938503036084442980
}
m_moveNumText
:
{
fileID
:
1881638514107634254
}
---
!u!114
&1995691973
---
!u!114
&1995691973
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -15120,6 +15122,84 @@ MonoBehaviour:
...
@@ -15120,6 +15122,84 @@ MonoBehaviour:
m_FillOrigin
:
0
m_FillOrigin
:
0
m_UseSpriteMesh
:
0
m_UseSpriteMesh
:
0
m_PixelsPerUnitMultiplier
:
1
m_PixelsPerUnitMultiplier
:
1
---
!u!1
&9047749345637030351
GameObject
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
serializedVersion
:
6
m_Component
:
-
component
:
{
fileID
:
6111148557972933165
}
-
component
:
{
fileID
:
5400858707778577745
}
-
component
:
{
fileID
:
1881638514107634254
}
m_Layer
:
5
m_Name
:
MoveNum
m_TagString
:
Untagged
m_Icon
:
{
fileID
:
0
}
m_NavMeshLayer
:
0
m_StaticEditorFlags
:
0
m_IsActive
:
1
---
!u!224
&6111148557972933165
RectTransform
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
9047749345637030351
}
m_LocalRotation
:
{
x
:
-0
,
y
:
-0
,
z
:
-0
,
w
:
1
}
m_LocalPosition
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalScale
:
{
x
:
1
,
y
:
1
,
z
:
1
}
m_Children
:
[]
m_Father
:
{
fileID
:
6064464676328073067
}
m_RootOrder
:
16
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_AnchorMin
:
{
x
:
0.5
,
y
:
1
}
m_AnchorMax
:
{
x
:
0.5
,
y
:
1
}
m_AnchoredPosition
:
{
x
:
0
,
y
:
-290
}
m_SizeDelta
:
{
x
:
160
,
y
:
30
}
m_Pivot
:
{
x
:
0.5
,
y
:
1
}
---
!u!222
&5400858707778577745
CanvasRenderer
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
9047749345637030351
}
m_CullTransparentMesh
:
0
---
!u!114
&1881638514107634254
MonoBehaviour
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
9047749345637030351
}
m_Enabled
:
1
m_EditorHideFlags
:
0
m_Script
:
{
fileID
:
11500000
,
guid
:
5f7201a12d95ffc409449d95f23cf332
,
type
:
3
}
m_Name
:
m_EditorClassIdentifier
:
m_Material
:
{
fileID
:
0
}
m_Color
:
{
r
:
1
,
g
:
1
,
b
:
0
,
a
:
1
}
m_RaycastTarget
:
0
m_Maskable
:
0
m_OnCullStateChanged
:
m_PersistentCalls
:
m_Calls
:
[]
m_FontData
:
m_Font
:
{
fileID
:
10102
,
guid
:
0000000000000000e000000000000000
,
type
:
0
}
m_FontSize
:
100
m_FontStyle
:
0
m_BestFit
:
0
m_MinSize
:
0
m_MaxSize
:
100
m_Alignment
:
4
m_AlignByGeometry
:
0
m_RichText
:
1
m_HorizontalOverflow
:
1
m_VerticalOverflow
:
1
m_LineSpacing
:
1
m_Text
:
move 3
---
!u!1
&9114938694515689495
---
!u!1
&9114938694515689495
GameObject
:
GameObject
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
...
3D Fruit/Assets/#A3_Prefabs/CylinderLine.prefab
View file @
1fd3cc6a
...
@@ -48,8 +48,8 @@ MeshRenderer:
...
@@ -48,8 +48,8 @@ MeshRenderer:
m_PrefabAsset
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
4311752678208769479
}
m_GameObject
:
{
fileID
:
4311752678208769479
}
m_Enabled
:
1
m_Enabled
:
1
m_CastShadows
:
1
m_CastShadows
:
0
m_ReceiveShadows
:
1
m_ReceiveShadows
:
0
m_DynamicOccludee
:
1
m_DynamicOccludee
:
1
m_MotionVectors
:
1
m_MotionVectors
:
1
m_LightProbeUsage
:
1
m_LightProbeUsage
:
1
...
@@ -58,7 +58,7 @@ MeshRenderer:
...
@@ -58,7 +58,7 @@ MeshRenderer:
m_RenderingLayerMask
:
1
m_RenderingLayerMask
:
1
m_RendererPriority
:
0
m_RendererPriority
:
0
m_Materials
:
m_Materials
:
-
{
fileID
:
2100000
,
guid
:
9576509a84a074930b0b9adcfb752204
,
type
:
2
}
-
{
fileID
:
2100000
,
guid
:
022f6bef8457b4433b125772121a67a7
,
type
:
2
}
m_StaticBatchInfo
:
m_StaticBatchInfo
:
firstSubMesh
:
0
firstSubMesh
:
0
subMeshCount
:
0
subMeshCount
:
0
...
...
3D Fruit/Assets/Res/Levels/Level0.prefab
View file @
1fd3cc6a
...
@@ -1539,10 +1539,10 @@ MonoBehaviour:
...
@@ -1539,10 +1539,10 @@ MonoBehaviour:
m_EditorClassIdentifier
:
m_EditorClassIdentifier
:
stencilZBufferDepth
:
0
stencilZBufferDepth
:
0
_downsampleFactor
:
4
_downsampleFactor
:
4
iterations
:
2
iterations
:
3
blurMinSpread
:
0.65
blurMinSpread
:
1
blurSpread
:
0.25
blurSpread
:
1
_blurIntensity
:
0.
3
_blurIntensity
:
0.
9
---
!u!1
&2419814893835863037
---
!u!1
&2419814893835863037
GameObject
:
GameObject
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -1871,6 +1871,7 @@ MonoBehaviour:
...
@@ -1871,6 +1871,7 @@ MonoBehaviour:
m_EditorClassIdentifier
:
m_EditorClassIdentifier
:
m_glassView
:
{
fileID
:
4057659938803460645
}
m_glassView
:
{
fileID
:
4057659938803460645
}
m_fruitParent
:
{
fileID
:
6664447788583718008
}
m_fruitParent
:
{
fileID
:
6664447788583718008
}
m_highLightEffect
:
{
fileID
:
2419814893742932198
}
---
!u!1
&2419814894024991057
---
!u!1
&2419814894024991057
GameObject
:
GameObject
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -3754,8 +3755,8 @@ Transform:
...
@@ -3754,8 +3755,8 @@ Transform:
m_PrefabAsset
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
4365432264920493982
}
m_GameObject
:
{
fileID
:
4365432264920493982
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalPosition
:
{
x
:
0.0614
,
y
:
0.032
,
z
:
0
}
m_LocalPosition
:
{
x
:
-0.12
,
y
:
0.83
,
z
:
0
}
m_LocalScale
:
{
x
:
0.02
,
y
:
0.025
,
z
:
0.02
}
m_LocalScale
:
{
x
:
0.02
5
,
y
:
0.035
,
z
:
0.025
}
m_Children
:
[]
m_Children
:
[]
m_Father
:
{
fileID
:
2532882320877503867
}
m_Father
:
{
fileID
:
2532882320877503867
}
m_RootOrder
:
3
m_RootOrder
:
3
...
@@ -3834,8 +3835,8 @@ Transform:
...
@@ -3834,8 +3835,8 @@ Transform:
m_PrefabAsset
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
4715037124225283051
}
m_GameObject
:
{
fileID
:
4715037124225283051
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalPosition
:
{
x
:
0.0614
,
y
:
0.06
9
,
z
:
0
}
m_LocalPosition
:
{
x
:
-0.12
,
y
:
0.
9
,
z
:
0
}
m_LocalScale
:
{
x
:
0.0
15
,
y
:
0.02
,
z
:
0.015
}
m_LocalScale
:
{
x
:
0.0
2
,
y
:
0.025
,
z
:
0.02
}
m_Children
:
[]
m_Children
:
[]
m_Father
:
{
fileID
:
2532882320877503867
}
m_Father
:
{
fileID
:
2532882320877503867
}
m_RootOrder
:
4
m_RootOrder
:
4
...
@@ -4708,6 +4709,7 @@ MonoBehaviour:
...
@@ -4708,6 +4709,7 @@ MonoBehaviour:
m_EditorClassIdentifier
:
m_EditorClassIdentifier
:
m_strawberry
:
{
fileID
:
5881045071721360484
}
m_strawberry
:
{
fileID
:
5881045071721360484
}
m_lemon
:
{
fileID
:
5495132487171662943
}
m_lemon
:
{
fileID
:
5495132487171662943
}
m_orange
:
{
fileID
:
0
}
m_effectPos
:
{
fileID
:
993432092483009715
}
m_effectPos
:
{
fileID
:
993432092483009715
}
---
!u!1001
&853374032285843243
---
!u!1001
&853374032285843243
PrefabInstance
:
PrefabInstance
:
...
...
3D Fruit/Assets/Res/Levels/Level1.prefab
View file @
1fd3cc6a
...
@@ -164,8 +164,8 @@ Transform:
...
@@ -164,8 +164,8 @@ Transform:
m_PrefabAsset
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
571631789864839032
}
m_GameObject
:
{
fileID
:
571631789864839032
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalPosition
:
{
x
:
0.0614
,
y
:
0.1101
,
z
:
0
}
m_LocalPosition
:
{
x
:
-0.12
,
y
:
0.97
,
z
:
0
}
m_LocalScale
:
{
x
:
0.01
3
,
y
:
0.02
,
z
:
0.013
}
m_LocalScale
:
{
x
:
0.01
8
,
y
:
0.025
,
z
:
0.018
}
m_Children
:
[]
m_Children
:
[]
m_Father
:
{
fileID
:
2532882320877503867
}
m_Father
:
{
fileID
:
2532882320877503867
}
m_RootOrder
:
6
m_RootOrder
:
6
...
@@ -1621,10 +1621,10 @@ MonoBehaviour:
...
@@ -1621,10 +1621,10 @@ MonoBehaviour:
m_EditorClassIdentifier
:
m_EditorClassIdentifier
:
stencilZBufferDepth
:
0
stencilZBufferDepth
:
0
_downsampleFactor
:
4
_downsampleFactor
:
4
iterations
:
2
iterations
:
3
blurMinSpread
:
0.65
blurMinSpread
:
1
blurSpread
:
0.25
blurSpread
:
1
_blurIntensity
:
0.
3
_blurIntensity
:
0.
9
---
!u!1
&2419814893835863037
---
!u!1
&2419814893835863037
GameObject
:
GameObject
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -1953,6 +1953,7 @@ MonoBehaviour:
...
@@ -1953,6 +1953,7 @@ MonoBehaviour:
m_EditorClassIdentifier
:
m_EditorClassIdentifier
:
m_glassView
:
{
fileID
:
4057659938803460645
}
m_glassView
:
{
fileID
:
4057659938803460645
}
m_fruitParent
:
{
fileID
:
6664447788583718008
}
m_fruitParent
:
{
fileID
:
6664447788583718008
}
m_highLightEffect
:
{
fileID
:
2419814893742932198
}
---
!u!1
&2419814894024991057
---
!u!1
&2419814894024991057
GameObject
:
GameObject
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -3836,8 +3837,8 @@ Transform:
...
@@ -3836,8 +3837,8 @@ Transform:
m_PrefabAsset
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
4365432264920493982
}
m_GameObject
:
{
fileID
:
4365432264920493982
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalPosition
:
{
x
:
0.0614
,
y
:
0.032
,
z
:
0
}
m_LocalPosition
:
{
x
:
-0.12
,
y
:
0.83
,
z
:
0
}
m_LocalScale
:
{
x
:
0.02
,
y
:
0.025
,
z
:
0.02
}
m_LocalScale
:
{
x
:
0.02
5
,
y
:
0.035
,
z
:
0.025
}
m_Children
:
[]
m_Children
:
[]
m_Father
:
{
fileID
:
2532882320877503867
}
m_Father
:
{
fileID
:
2532882320877503867
}
m_RootOrder
:
4
m_RootOrder
:
4
...
@@ -3916,8 +3917,8 @@ Transform:
...
@@ -3916,8 +3917,8 @@ Transform:
m_PrefabAsset
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
4715037124225283051
}
m_GameObject
:
{
fileID
:
4715037124225283051
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalRotation
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_LocalPosition
:
{
x
:
0.0614
,
y
:
0.06
9
,
z
:
0
}
m_LocalPosition
:
{
x
:
-0.12
,
y
:
0.
9
,
z
:
0
}
m_LocalScale
:
{
x
:
0.0
15
,
y
:
0.02
,
z
:
0.015
}
m_LocalScale
:
{
x
:
0.0
2
,
y
:
0.025
,
z
:
0.02
}
m_Children
:
[]
m_Children
:
[]
m_Father
:
{
fileID
:
2532882320877503867
}
m_Father
:
{
fileID
:
2532882320877503867
}
m_RootOrder
:
5
m_RootOrder
:
5
...
...
3D Fruit/ProjectSettings/QualitySettings.asset
View file @
1fd3cc6a
...
@@ -93,7 +93,7 @@ QualitySettings:
...
@@ -93,7 +93,7 @@ QualitySettings:
skinWeights
:
4
skinWeights
:
4
textureQuality
:
0
textureQuality
:
0
anisotropicTextures
:
1
anisotropicTextures
:
1
antiAliasing
:
0
antiAliasing
:
2
softParticles
:
0
softParticles
:
0
softVegetation
:
0
softVegetation
:
0
realtimeReflectionProbes
:
0
realtimeReflectionProbes
:
0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment